Почему ломаются именно эти знаки
Word, Outlook, WordPress и многие другие программы при наборе сами заменяют прямые кавычки и дефисы на типографские: «, », —, –, …. Тире, многоточие и кавычки “ ” „ ’ в UTF-8 лежат в диапазоне E2 80 xx и занимают три байта. Если прочитать их как Windows-1251, они всегда превращаются в †и ещё один символ. Ёлочки занимают два байта и становятся В« и В», а знак № – это в„–.
Русские буквы в UTF-8 занимают два байта и при той же ошибке выглядят как Р и С через одну – подробнее об этом. Поэтому чаще всего ломаются и буквы, и знаки сразу.
Кракозябры
Акция «Лето» — скидки до 30 %… Заказ № 15 уже ждёт вас!
После исправления
Акция «Лето» — скидки до 30 %… Заказ № 15 уже ждёт вас!
Все варианты в одном списке
—→—(длинное тире),–→–(короткое тире)В«→«,В»→»(кавычки-ёлочки)„→„,“→“(кавычки-лапки)”→”(закрывающая кавычка)’→’(апостроф)…→…(многоточие)в„–→№(знак номера)вЂбез продолжения → скорее всего‘(открывающая одинарная кавычка, см. ниже)
Особый случай: †и больше ничего
Открывающая одинарная кавычка ‘ содержит байт 98, а в Windows-1251 для него нет символа. Поэтому от неё остаётся только вЂ. По такому обрывку нельзя точно понять, какой знак здесь был, поэтому Mojibuster оставляет это место без изменений. Проверьте его вручную.
Где встречаются такие ошибки
Чаще всего – в выгрузках из 1С и CSV-файлах, открытых в Excel, в письмах в Outlook и других почтовых программах, в статьях WordPress после переноса сайта и в текстах со старых форумов.
Как этого избежать
- Сохраняйте тексты из Word и редакторов в UTF-8 и указывайте кодировку при импорте.
- Проверьте кодировку в сервисах рассылок, интернет-магазинах и выгрузках из 1С: везде должно быть
UTF-8. - В письмах причина часто на стороне отправителя. Как прочитать такие письма в Outlook.
- В базах данных установите для таблиц и подключения
utf8mb4– подробнее про MySQL и phpMyAdmin.
Частые вопросы
Текст выглядит ещё хуже, знаков стало больше. Что это?
Скорее всего, текст неправильно перекодировали дважды. Mojibuster исправляет и это – подробнее о двойной перекодировке.
Может, просто заменить всё на прямые кавычки и дефисы?
Не обязательно. Mojibuster возвращает исходные знаки. Если вам больше нравятся ' и ", их можно заменить потом.
Почему сломаны только кавычки и тире, а буквы в порядке?
Вероятно, текст частично набирали заново или он собран из двух источников. Mojibuster исправляет только испорченные места и не трогает правильные символы.