Почему CSV показывает странные символы в Excel
Путаница с кодировкой, из-за которой ломаются буквы, и три способа её исправить.
Вы открываете CSV в Excel, и вместо кириллицы видите «кракозябры», а имена вроде Müller или José показывают странные символы на месте букв с диакритикой. Знаки евро и апострофы тоже превращаются в наборы странных знаков. С данными всё в порядке. Excel читает файл не в той кодировке символов.
Что происходит
Текстовый файл это просто байты, а кодировка это правило превращения байтов в буквы. Почти все современные системы записывают CSV в UTF-8, который поддерживает любой язык. Excel в Windows при двойном щелчке по CSV до сих пор предполагает старую региональную кодировку, например Windows-1251 или Windows-1252, если файл не начинается с небольшой метки, которая называется метка порядка байтов, или BOM. Без BOM каждый символ за пределами простой латиницы декодируется по неверному правилу, и каждая буква выходит двумя-тремя мусорными знаками.
Данные целы. Откройте тот же файл в Google Таблицах, Numbers или текстовом редакторе, и он выглядит нормально.
Способ 1: добавить BOM
Если файл в корректном UTF-8 и неправильно его показывает только Excel, пропустите его через исправление кодировки с включённой опцией BOM. Символы не меняются, но метка сообщает Excel, что нужно читать UTF-8, и дальше файл правильно открывается двойным щелчком.
Способ 2: конвертировать в настоящий файл Excel
У файла .xlsx вообще нет неоднозначности с кодировкой. Конвертер CSV в Excel правильно читает CSV и сохраняет книгу, которая везде открывается как надо. Он также сохраняет ведущие нули в индексах и телефонах, которые Excel срезает, открывая CSV напрямую.
Способ 3: импортировать вместо двойного щелчка
В Excel выберите «Данные», «Из текстового/CSV-файла» и установите «Источник файла» в 65001: Юникод (UTF-8). Тогда Excel прочитает файл правильно. Это работает, но об этом нужно помнить каждый раз, поэтому для файлов, которыми вы делитесь, первые два способа практичнее.
Когда повреждён сам файл
Иногда испорченные символы сохраняются в самом файле. Так бывает, когда кто-то открыл UTF-8 в Excel, увидел кашу и снова сохранил. Теперь мусорные символы и есть данные. Проблема будет видна в любой программе, а не только в Excel. В исправлении кодировки есть режим восстановления именно для этого: он отменяет двойное кодирование и возвращает исходные буквы. Автоматический режим распознаёт этот случай в большинстве файлов.
Быстрая диагностика
| Что вы видите | Вероятная причина | Решение |
|---|---|---|
| Неправильно только в Excel, в остальных программах нормально | Нет BOM | Добавить BOM или конвертировать в .xlsx |
| Неправильно во всех программах | Файл сохранили после неправильного чтения | Исправить двойное кодирование |
| Вопросительные знаки или квадратики | Файл сохранён в старой кодировке Windows | Перевести из Windows-1252 в UTF-8 |
Как этого избежать
- При экспорте из Excel выбирайте «CSV UTF-8», а не просто CSV.
- При выгрузке из других систем для пользователей Excel включайте BOM, если такая опция есть.
- Никогда не пересохраняйте CSV, который выглядит испорченным. Сначала исправьте кодировку.