Як виглядає подвійне кодування
До
Добрий день, товар готовий до відправки
Після
Добрий день, товар готовий до відправки
Як це трапляється
В UTF-8 кожна українська літера займає два байти. Якщо програма прочитає ці байти як Windows-1251, замість однієї літери вийдуть два символи: «п» перетвориться на Рї. Зберігши результат знову в UTF-8, програма перетворює кожен із цих символів на нову пару байтів. Якщо те саме станеться ще раз, текст стане вдвічі-втричі довшим і зовсім нечитабельним.
Типові причини другого кола псування:
- Базу даних переносять на новий сервер, а дамп MySQL чи WordPress уже був зіпсований раніше.
- CSV відкрили в Excel, зберегли й пізніше ще раз імпортували з неправильним кодуванням — докладніше на сторінці про CSV в Excel.
- Скрипт, API чи плагін «перекодовує» текст, який уже в UTF-8.
Найпоширеніші випадки
Подвійне кодування
Р° Рѕ С” С— С– Р¶
Правильно
а о є ї і ж
У разі потрійного кодування рядок стає ще довшим. Mojibuster автоматично виправляє й цей рівень — до трьох рівнів включно.
Чому пошуку й заміни замало
Під час ручної заміни треба знати кожен шаблон — окремий для кожної літери й кожного рівня. Якийсь легко пропустити, а можна й випадково зіпсувати правильний текст. Mojibuster діє інакше: він обчислює вихідні байти й перевіряє, чи вийде коректний UTF-8. Лише тоді фрагмент замінюється.
- Вставте текст або перетягніть файл у поле вище.
- Mojibuster визначить, скільки разів текст було зіпсовано, і виправить до трьох рівнів.
- У блоці Що змінилося? видно всі виправлені місця. Після цього скопіюйте результат або завантажте файл.
Правильний текст залишається недоторканим — навіть якщо в одному файлі змішано справні й зіпсовані рядки. Звичайні однорівневі кракозябри на кшталт РїСЂРёРІС–С‚ описано на сторінці «Що таке кракозябри».
Часті запитання
Як зрозуміти, що це подвійне кодування?
За довгими послідовностями на кшталт Р С—РЎР‚ з пробілами та знаками ‚. Однорівневе псування коротше: РїСЂРёРІС–С‚. Якщо після першого виправлення кракозябри лишаються, рівнів було більше.
Скільки рівнів може виправити Mojibuster?
До трьох. Більше на практиці майже не трапляється.
А якщо подвійне кодування лише в частині тексту?
Це не проблема. Mojibuster виправляє кожне місце окремо, а правильні частини не чіпає.
Чи можна спершу перевірити результат?
Так. У блоці Що змінилося? Mojibuster показує кожне виправлене місце з номером рядка — до того, як ви скопіюєте текст чи завантажите файл.