Что такое кракозябры?

Кракозябры (во всём мире их называют mojibake) – это текст, превратившийся в бессмыслицу: Привет или Ïðèâåò вместо Привет. Они появляются, когда текст сохранён в одной кодировке, а прочитан в другой, и почти всегда их можно исправить полностью. Вставьте испорченный текст ниже и попробуйте.

Работает с текстом и файлами:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

Например, выгрузки из Excel и 1С, дампы баз данных, субтитры или код сайтов.

Исправить

  1. Перетащите файл или вставьте текст
  2. Исправление происходит автоматически
  3. Скопируйте или скачайте
или просто перетащите файл сюда
  • Без загрузки. Файлы исправляются прямо в браузере и не покидают ваше устройство.

  • Серверы в ЕС. Mojibuster работает на сервере в стране Финляндия (ЕС), поэтому действует Общий регламент по защите данных (GDPR). Текст GDPR (EUR-Lex, англ.)

Откуда взялись слова

«Кракозябры» – шутливое русское название нечитаемых символов. В английском и большинстве других языков говорят mojibake (文字化け): по-японски «moji» – «символ», «bake» – «превращение». В 1990-х японские компьютеры одновременно использовали Shift_JIS, EUC-JP и ISO-2022-JP, и испорченные письма были обычным делом. В России история похожая: Windows-1251, KOI8-R и досовская CP866 долго жили параллельно.

Как возникают кракозябры

Компьютер хранит текст в виде байтов. Кодировка определяет, какой байт какой букве соответствует. В UTF-8 буква П занимает два байта: D0 9F. Программа, которая читает их как Windows-1251, показывает по символу на каждый байт: Р вместо D0 и џ вместо 9F.

На этом шаге ничего не теряется – байты на месте, их просто прочитали неправильно. Поэтому кракозябры обычно можно вернуть в нормальный вид: Mojibuster превращает неверные символы обратно в байты и читает их в правильной кодировке.

Текст в UTF-8, прочитанный как Windows-1251

Кракозябры

Привет! Встреча в пятницу в 15:00, кабинет 204.

После исправления

Привет! Встреча в пятницу в 15:00, кабинет 204.

Какие бывают кракозябры

  • Привет – UTF-8, прочитанный как Windows-1251. Самый частый случай, например в Excel: кракозябры в Excel.
  • Ïðèâåò – текст в Windows-1251, показанный в западноевропейской кодировке. Подробнее: Windows-1251 в UTF-8.
  • рТЙЧЕФ – текст в KOI8-R, прочитанный как Windows-1251. Встречается в старых письмах и файлах с Unix-серверов.
  • ???? – буквы уже заменены вопросительными знаками. Их, к сожалению, не восстановить.

Кракозябры в других языках

  • Японский: 縺薙s縺ォ縺。縺ッ вместо こんにちは – UTF-8, прочитанный как Shift_JIS. Подробнее на японской странице.
  • Китайский: 浣犲ソ вместо 你好 – UTF-8, прочитанный как GBK. По-китайски это 乱码 (luànmǎ, «хаотичный код»).
  • Западные языки: é, ñ или € вместо é, ñ или € – самая распространённая форма в мире.

Типичные причины

  • Excel открывает CSV в UTF-8 без BOM в кодировке Windows-1251.
  • Подключение к базе данных использует cp1251 или latin1, а данные хранятся в UTF-8.
  • Сайт или письмо указывает неверный charset.
  • Старые файлы в Windows-1251 или KOI8-R открывают в программе, которая ждёт UTF-8.
  • Уже испорченный текст перекодируют ещё раз – получаются двойные кракозябры.

Можно ли исправить кракозябры всегда?

Почти всегда, пока байты целы. Исправить уже нельзя, если программа заменила буквы на ? или на символ замены � – исходная информация тогда потеряна. Mojibuster исправляет всё, что можно исправить, и сообщает, сколько мест потеряно.

Как избежать кракозябр

  • Сохраняйте файлы в UTF-8, CSV для Excel – в формате CSV UTF-8 (разделитель – запятая).
  • Указывайте кодировку: <meta charset="utf-8"> в HTML, utf8mb4 в MySQL и MariaDB.
  • Перекодируйте текст только один раз, на границе между двумя системами.
  • При импорте выбирайте кодировку сами, а не полагайтесь на догадку программы.

Частые вопросы

Почему кракозябры называют mojibake?

Это японское слово (文字化け, «превращение символов»). В Японии с этой проблемой сталкивались так часто, что слово перешло в английский и стало международным термином.

Файл повреждён или это вирус?

Нет. Кракозябры – это проблема отображения, а не вирус, и обычно данные не потеряны. Файл просто прочитан в неправильной кодировке.

Чем кракозябры отличаются от символа �?

Кракозябры вроде Привет ещё содержат исходные байты и исправляются. Символ � означает, что программа не смогла прочитать байт и заменила его, – эта буква потеряна.

Текст загружается на сервер?

Нет. Mojibuster исправляет текст прямо в браузере. Он никуда не передаётся и нигде не сохраняется.

Другие инструкции