Двойная кодировка: исправляем кракозябры вида привет и Р С—РЎР‚

Если вместо русского текста вы видите нечто вроде привет, а после «исправления» получается ещё более странная смесь Р С—РЎР‚…, текст испорчен не один раз, а дважды. Mojibuster отменяет оба шага — даже если испорчена только часть текста.

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

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

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

Исправить

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

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

Как выглядит двойная кодировка

Фраза, дважды прочитанная в неправильной кодировке

До

Добрый день, заказ готов к отправке

После

Добрый день, заказ готов к отправке

Как это происходит

В UTF-8 каждая русская буква занимает два байта. Если программа прочитает эти байты как Windows-1251, получится два символа вместо одного: «п» превратится в Рї. Сохранив результат снова в UTF-8, программа превращает каждый из этих символов в новую пару байт. Если то же самое случится ещё раз, текст станет в два-три раза длиннее и совсем нечитаемым.

Типичные причины второго круга порчи:

  • Базу данных переносят на новый сервер, а дамп MySQL или WordPress уже был испорчен раньше.
  • CSV открыли в Excel, сохранили и позже ещё раз импортировали с неверной кодировкой — подробнее на странице про CSV в Excel.
  • Скрипт, API или плагин «перекодирует» текст, который уже в UTF-8.

Самые частые случаи

Двойная кодировка

Р В°
Р С•
Р Вµ
РЎРЏ
РЎР‹
Р В¶

Правильно

а
о
е
я
ю
ж

При тройной кодировке строка становится ещё длиннее. Mojibuster автоматически исправляет и этот уровень — до трёх уровней включительно.

Почему поиска и замены недостаточно

При ручной замене нужно знать каждый шаблон — отдельный для каждой буквы и каждого уровня. Какой-то легко пропустить, а можно и случайно испортить правильный текст. Mojibuster поступает иначе: он вычисляет исходные байты и проверяет, получится ли корректный UTF-8. Только тогда фрагмент заменяется.

  1. Вставьте текст или перетащите файл в поле выше.
  2. Mojibuster определит, сколько раз текст был испорчен, и исправит до трёх уровней.
  3. В блоке Что изменилось? видны все исправленные места. После этого скопируйте результат или скачайте файл.

Правильный текст остаётся нетронутым — даже если в одном файле перемешаны исправные и испорченные строки. Обычные одноуровневые кракозябры вроде привет разобраны на странице «Что такое кракозябры».

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

Как узнать, что это двойная кодировка?

По длинным последовательностям вроде Р С—РЎР‚, где много пробелов и знаков ‚. Одноуровневая порча короче: привет. Если после первого исправления остаются кракозябры, значит, уровней было больше.

Сколько уровней может исправить Mojibuster?

До трёх. Больше на практике почти не встречается.

А если двойная кодировка только в части текста?

Это не проблема. Mojibuster исправляет каждое место отдельно, а правильные части не трогает.

Можно ли сначала проверить результат?

Да. В блоке Что изменилось? Mojibuster показывает каждое исправленное место с номером строки — до того, как вы скопируете текст или скачаете файл.

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