Що таке кракозябри?

Кракозябри (у світі їх називають 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-U та досові кодування довго існували паралельно.

Як виникають кракозябри

Комп’ютер зберігає текст у вигляді байтів. Кодування визначає, якій букві відповідає який байт. В UTF-8 буква П займає два байти: D0 9F. Програма, яка читає їх як Windows-1251, показує по символу на кожен байт: Р замість D0 і џ замість 9F. Українська і (D1 96) стає С–.

На цьому кроці нічого не губиться – байти на місці, їх просто прочитали неправильно. Тому кракозябри зазвичай можна повернути в нормальний вигляд: Mojibuster перетворює неправильні символи назад на байти й читає їх у правильному кодуванні.

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

Кракозябри

Привіт! Зустріч у п’ятницю о 15:00, кабінет 204. Їдемо до Ґанни в Київ.

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

Привіт! Зустріч у п’ятницю о 15:00, кабінет 204. Їдемо до Ґанни в Київ.

Які бувають кракозябри

  • РџСЂРёРІС–С‚ – UTF-8, прочитаний як Windows-1251. Найчастіший випадок, наприклад в Excel: кракозябри в Excel.
  • Ïðèâ³ò – текст у Windows-1251, показаний у західноєвропейському кодуванні. Детальніше: Windows-1251 в UTF-8.
  • рТЙЧ¦Ф – текст у KOI8-U, прочитаний як 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-U відкривають у програмі, яка очікує UTF-8.
  • Уже зіпсований текст перекодовують ще раз – виходять подвійні кракозябри.

Чи можна виправити кракозябри завжди?

Майже завжди, поки байти цілі. Виправити вже не можна, якщо програма замінила букви на ? або на символ заміни � – вихідну інформацію тоді втрачено. Mojibuster виправляє все, що можна виправити, і повідомляє, скільки місць утрачено.

Як уникнути кракозябр

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

Часті запитання

Чому кракозябри називають mojibake?

Це японське слово (文字化け, «перетворення символів»). У Японії з цією проблемою стикалися так часто, що слово перейшло в англійську й стало міжнародним терміном.

Файл пошкоджено, чи це вірус?

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

Чим кракозябри відрізняються від символу �?

Кракозябри на кшталт РџСЂРёРІС–С‚ ще містять вихідні байти й виправляються. Символ � означає, що програма не змогла прочитати байт і замінила його, – цю букву втрачено.

Текст надсилається на сервер?

Ні. Mojibuster виправляє текст прямо в браузері. Він нікуди не передається і ніде не зберігається.

Інші інструкції