Как выглядит двойная кодировка
До
Добрый день, заказ готов к отправке
После
Добрый день, заказ готов к отправке
Как это происходит
В UTF-8 каждая русская буква занимает два байта. Если программа прочитает эти байты как Windows-1251, получится два символа вместо одного: «п» превратится в Рї. Сохранив результат снова в UTF-8, программа превращает каждый из этих символов в новую пару байт. Если то же самое случится ещё раз, текст станет в два-три раза длиннее и совсем нечитаемым.
Типичные причины второго круга порчи:
- Базу данных переносят на новый сервер, а дамп MySQL или WordPress уже был испорчен раньше.
- CSV открыли в Excel, сохранили и позже ещё раз импортировали с неверной кодировкой — подробнее на странице про CSV в Excel.
- Скрипт, API или плагин «перекодирует» текст, который уже в UTF-8.
Самые частые случаи
Двойная кодировка
Р В° Р С• Р Вµ РЎРЏ РЎР‹ Р В¶
Правильно
а о е я ю ж
При тройной кодировке строка становится ещё длиннее. Mojibuster автоматически исправляет и этот уровень — до трёх уровней включительно.
Почему поиска и замены недостаточно
При ручной замене нужно знать каждый шаблон — отдельный для каждой буквы и каждого уровня. Какой-то легко пропустить, а можно и случайно испортить правильный текст. Mojibuster поступает иначе: он вычисляет исходные байты и проверяет, получится ли корректный UTF-8. Только тогда фрагмент заменяется.
- Вставьте текст или перетащите файл в поле выше.
- Mojibuster определит, сколько раз текст был испорчен, и исправит до трёх уровней.
- В блоке Что изменилось? видны все исправленные места. После этого скопируйте результат или скачайте файл.
Правильный текст остаётся нетронутым — даже если в одном файле перемешаны исправные и испорченные строки. Обычные одноуровневые кракозябры вроде привет разобраны на странице «Что такое кракозябры».
Частые вопросы
Как узнать, что это двойная кодировка?
По длинным последовательностям вроде Р С—РЎР‚, где много пробелов и знаков ‚. Одноуровневая порча короче: привет. Если после первого исправления остаются кракозябры, значит, уровней было больше.
Сколько уровней может исправить Mojibuster?
До трёх. Больше на практике почти не встречается.
А если двойная кодировка только в части текста?
Это не проблема. Mojibuster исправляет каждое место отдельно, а правильные части не трогает.
Можно ли сначала проверить результат?
Да. В блоке Что изменилось? Mojibuster показывает каждое исправленное место с номером строки — до того, как вы скопируете текст или скачаете файл.