Кракозябры в CSV — почему вместо букв странные символы и как исправить
Странные символы вроде «Ã©» или «Ð¡ÑƒÐ¼Ð°» означают, что CSV сохранили в одной кодировке, а открыли так, будто он в другой: буквы по-прежнему в файле, просто их неправильно расшифровывают. Откройте файл с правильной кодировкой (Просмотр CSV определяет её автоматически) и сохраните копию в UTF-8. Вопросительные знаки («????») — другой случай: обычно они означают, что буквы потерялись ещё при записи файла.
Что такое кодировка — за одну минуту
CSV-файл — это обычный текст, а на диске текст — просто последовательность чисел (байтов). Кодировка — это таблица, которая говорит, какое число какой букве соответствует. Для латинских букв и цифр почти все кодировки совпадают, поэтому суммы в выгрузке из банка выглядят нормально, а имена и назначения платежей превращаются в мусор.
В выгрузках из бухгалтерских программ и банков вы встретите три кодировки:
- UTF-8 — современный стандарт. В одном файле может хранить любые алфавиты. Буквы, которых нет в базовом английском, занимают по два байта и больше.
- Windows-1251 — старая однобайтовая кодировка для кириллицы (русский, украинский, болгарский, сербский). Многие старые бухгалтерские программы до сих пор выгружают в ней.
- Windows-1252 — старая однобайтовая кодировка для западноевропейских языков: é, ü, ñ, ø, € и так далее.
Сам файл обычно не сообщает, в какой он кодировке. Открывающей программе приходится угадывать, и если она ошибается, получается mojibake — так это явление называют по-научному, а по-простому — «кракозябры».
Читаем кракозябры: о чём говорит каждый вариант
Вид мусора подсказывает, что именно пошло не так.
| Вы видите | Ожидали | Что произошло |
|---|---|---|
é, ü, € |
é, ü, € | Файл в UTF-8 открыт как Windows-1252 |
Сума (много Ð и Ñ) |
Сума (укр. «сумма») | Кириллица в UTF-8 открыта как Windows-1252 |
Ñóìà (латиница с диакритикой) |
Сума | Файл в Windows-1251 открыт как Windows-1252 |
Cafй |
Café | Файл в Windows-1252 открыт как Windows-1251 |
� (чёрный ромб с ?) |
любая буква | Файл в старой кодировке открыт как UTF-8 |
???? |
любая буква | Буквы потерялись при сохранении файла |
Пары вида «Ã» + что-то или «Ð»/«Ñ» + что-то — характерный признак того, что UTF-8 прочитали как старую кодировку: в UTF-8 каждая неанглийская буква занимает два байта, а старая таблица показывает каждый байт отдельным символом. Это хорошая новость: ничего не потеряно, и если открыть файл как UTF-8, всё встанет на место.
Простые вопросительные знаки — плохая новость. Обычно они появляются, когда программа пыталась сохранить текст в кодировке, где для этих букв нет места (например, кириллицу в Windows-1252), и заменила каждую из них на ?. Исходных букв в файле больше нет, и ни один просмотрщик их не вернёт. Решение — заново выгрузить файл из исходной системы, выбрав UTF-8 или нужную региональную кодировку, если окно экспорта это позволяет.
BOM: почему Excel путается с UTF-8
Файл в UTF-8 может начинаться с трёх невидимых байтов — метки порядка байтов (BOM, byte order mark). Это подсказка: «этот файл в UTF-8».
Когда вы открываете CSV двойным щелчком, Excel во многом полагается на эту подсказку. С BOM он обычно читает UTF-8 правильно; без неё часто считает, что файл в старой кодировке вашего компьютера, — и именно так совершенно нормальная выгрузка из банка в UTF-8 превращается в «Ð¡ÑƒÐ¼Ð°». Другие программы, наоборот, показывают BOM как мусор вроде  в начале заголовка первого столбца. Если вы видите такое, файл в UTF-8, а BOM просто отображается как текст.
Способ 1: открыть файл с автоопределением кодировки
Быстрее всего — доверить определение кодировки программе. Просмотр CSV от Opener сначала пробует UTF-8, а если не подходит — Windows-1251 или Windows-1252 в зависимости от текста, так что имена и назначения платежей отображаются правильно без всякого мастера импорта. Разделитель — запятая, точка с запятой, табуляция или вертикальная черта — тоже определяется сам.
Файл читается в вашем браузере и никуда не загружается, а это важно для зарплатных ведомостей, счетов и банковских выписок. Чтобы исправить файл для других программ, нажмите кнопку экспорта: вы получите чистую копию таблицы в UTF-8 (экспортируется текущий вид, так что, если нужны все строки, сначала очистите поиск). Если проблема не в кракозябрах, а в том, что всё попадает в один столбец, см. статью почему CSV открывается в один столбец.
Способ 2: импорт в Excel с правильной кодировкой
Не открывайте файл двойным щелчком. Вместо этого откройте пустую книгу и воспользуйтесь импортом «Из текстового/CSV-файла» на вкладке «Данные». В окне предпросмотра есть список, где выбирается кодировка (в английской версии он называется «File origin»):
- вариант с номером 65001 — UTF-8 — для файлов, где видно
éилиСума; - кириллическая кодировка Windows, 1251, — для старых выгрузок на кириллице;
- западноевропейская кодировка Windows, 1252, — для старых западноевропейских выгрузок.
Переключайтесь между ними и смотрите на предпросмотр: как только имена выглядят правильно, вы нашли нужную. Затем загрузите данные. Если файл нужно отправить дальше, сохраните его из Excel с типом «CSV UTF-8», а не просто «CSV», который может снова использовать старую кодировку.
Способ 3: Google Таблицы, LibreOffice или текстовый редактор
Google Таблицы. Импорт CSV в Google Таблицы («Файл» → «Импортировать») хорошо работает с файлами в UTF-8, а в окне импорта можно выбрать разделитель. Для файлов в старых кодировках этот путь менее надёжен: если выгрузка в Windows-1251 или Windows-1252 всё равно показывает кракозябры, сконвертируйте её в UTF-8 одним из других способов и импортируйте уже эту копию.
LibreOffice Calc. При открытии CSV LibreOffice показывает окно импорта текста со списком кодировок. Выберите Unicode (UTF-8), кириллическую Windows-1251 или западноевропейскую Windows-1252 — предпросмотр сразу обновится. Программа бесплатна и работает на Windows, macOS и Linux.
Текстовый редактор. Редакторы вроде «Блокнота» в Windows, TextEdit в macOS или редактора кода вроде VS Code позволяют выбрать кодировку при сохранении. Подвох в том, что редактор сначала должен открыть файл в правильной кодировке. Если в редакторе текст выглядит нормально, сохраните его в UTF-8. Если кракозябры видны уже там, сохранение просто законсервирует мусор — сначала откройте файл заново с правильной кодировкой.
Частые вопросы
Можно ли исправить «????» в CSV?
Как правило, нет. Вопросительные знаки означают, что символы заменили при записи файла, так что исходных букв в нём нет. Выгрузите файл заново из бухгалтерской программы или банка, по возможности выбрав UTF-8.
Какую кодировку выбирать при сохранении или экспорте?
UTF-8. Она хранит любые алфавиты, и её понимают все современные программы. Если коллеги открывают файлы двойным щелчком в Excel, используйте в Excel вариант «CSV UTF-8», чтобы файл начинался с BOM.
Изменятся ли мои числа, если сменить кодировку?
Нет. Цифры, точки и запятые одинаковы в UTF-8, Windows-1251 и Windows-1252, поэтому суммы и даты не пострадают. Меняются только буквы, которых нет в базовом английском.
Безопасно ли исправлять банковскую выписку онлайн?
Только если инструмент её не загружает. Просмотр CSV расшифровывает и экспортирует файл полностью в вашем браузере, так что выписка не покидает ваше устройство.