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