Перейти к основному содержимому
CSV First Aid

Как починить проблемы кодировки CSV — UTF-8 против Windows-1252

Проблемы кодировки — причина №1 искажённого текста в CSV. Это руководство объясняет, что такое кодировка, почему UTF-8 и Windows-1252 сталкиваются, и как чинить это в каждом типичном туле.

Что такое кодировка символов?

Кодировка символов — это маппинг байтов в символы. UTF-8 использует 1–4 байта на символ и покрывает все Unicode-символы. Windows-1252 (также CP-1252 или Latin-1) использует ровно 1 байт на символ и покрывает западноевропейские языки.

Проблема: последовательность байтов вроде 0xC3 0xA9 означает é в UTF-8, но неправильно читается как два символа в Windows-1252. Если декодировать с неправильной кодировкой — получите mojibake, искажённый текст, выглядящий как случайные символы.


Как определить кодировку CSV-файла

В Python: import chardet; chardet.detect(open('file.csv','rb').read()) возвращает кодировку с уровнем уверенности. Команда file в Unix: file -i data.csv показывает определённый charset.

На практике два самых частых случая: (1) файл — валидный UTF-8, или (2) это Windows-1252 и содержит символы с кодами выше 0x7F. CSV First Aid проверяет оба автоматически.


Починка кодировки в Python

Чтение: pd.read_csv('file.csv', encoding='cp1252'), если файл Windows-1252. Конвертация: прочитать с правильной кодировкой, записать как UTF-8: df.to_csv('clean.csv', encoding='utf-8', index=False).

Если не уверены в кодировке: попробовать сначала UTF-8. Если видите символы замены (\ufffd) — откатиться на cp1252. CSV First Aid делает ровно это внутри.


Починка кодировки в Excel

Excel на Windows: Данные → Из текста/CSV → Источник файла → выбрать '65001: Unicode (UTF-8)'. Excel на Mac: Файл → Импорт → CSV → установить кодировку.

Трюк с BOM: если добавить UTF-8 BOM (EF BB BF) в начало файла — Excel автоматически определит как UTF-8. CSV First Aid может добавить BOM при экспорте для совместимости с Excel.


Best practices

Всегда экспортируйте как UTF-8. Всегда явно указывайте кодировку при чтении (не полагайтесь на дефолты). Всегда валидируйте после конверсии — откройте файл и проверьте, что символы с акцентами отображаются правильно.

Если сомневаетесь — прогоните файл через CSV First Aid. Он определяет кодировку, конвертирует в UTF-8 и убирает BOM за один шаг.

Не хочется гадать с флагами chardet или iconv? CSV First Aid делает определение за вас.

Почините CSV сейчас →

Похожие инструменты