Перейти до вмісту

Детектор кодування

Вгадайте оригінальне кодування за спотвореним текстом і відновіть його.

Введення

Детектор кодування

Вставте текст там, де літери з акцентами перетворилися на рядки, як-от «PrĂ¶ĂŸe» або «GrĂ¶ĂŸe», і цей інструмент здогадається, що пішло не так. Зазвичай причиною є файл UTF-8, відкритий, збережений або переданий через щось, що передбачає однобайтову кодову сторінку — Windows-1250 або ISO-8859-2 для центральноєвропейського тексту, Windows-1252 для західноєвропейського тексту. Кожен символ з акцентом спочатку складався з двох або трьох байтів UTF-8; читати один байт за раз під неправильною кодовою сторінкою, вони стають саме таким подвійним сміттям.

Детектор працює, пробуючи інверсію для кожної кодової сторінки-кандидата та перевіряючи, чи є результат правильно сформованим UTF-8 — структурним тестом, який, по суті, ніколи не проходить випадково правильно закодований текст, саме тому автоматичне визначення може застосувати виправлення з реальною впевненістю, а не підкинути монету. Коли він знаходить відповідність, він показує вгадане оригінальне кодування, вгадане неправильно прочитане кодування та відновлений текст, а також кількість символів, видалених виправленням (mojibake завжди довший за текст, з якого він походить, оскільки кожен пошкоджений символ раніше був кількома).

Автоматичне визначення вгадує лише напрямок, який можна перевірити — UTF-8 відображається через неправильну кодову сторінку. Більш рідкісний зворотний випадок, файл Windows-1250 або ISO-8859-2, який читається як Latin-1, не має еквівалентної структурної перевірки, тому він пропонується як ручний варіант у спадному меню, коли ви вже підозрюєте, що сталося, а не мовчки здогадуєтеся. Це евристичний інструмент, а не гарантія: текст, який змішує кілька мов або містить символи за межами діапазону цільової кодової сторінки, може не підлягати відновленню, і він говорить про це просто, а не повертає впевнено неправильну відповідь.

Усе працює локально у вашому браузері з використанням тих самих таблиць кодування, які браузери використовують для візуалізації веб-сторінок — нічого, що ви вставляєте, нікуди не завантажується, що тут важливіше, ніж більшість інструментів, оскільки спотворений текст часто походить із записів реальних клієнтів, експортованих баз даних або запитів у службу підтримки.

FAQ

Як дізнатися, яке кодування було використано?
Він повторно кодує спотворений текст під кожною кодовою сторінкою-кандидатом і перевіряє, чи утворюють отримані байти дійсний UTF-8. Правильно закодований текст, по суті, ніколи не проходить цю перевірку випадково, тому збіг є надійною ознакою того, що сталося — не точною, але близькою.
Чому автовизначення не пропонує виправити "читати як Latin-1"?
Цей напрямок не має еквівалентного способу самоперевірки — багато значень байтів є дійсними літерами в кількох кодових сторінках, тому він може створити правдоподібний, але неправильний текст. Виберіть його вручну зі спадного списку, коли ви вже знаєте, що це ситуація.
Чи можна виправити текст із смайлами чи змішаними мовами?
Тільки якщо кожен символ у тексті належить до кодової сторінки-кандидата. Один емодзі або символ поза межами цього діапазону означає, що весь рядок не можна повернути назад, і інструмент залишає його без змін, а не вгадує.
Чи це гарантовано правильно?
Ні — це евристичний, а не сертифікований конвертер. Він дуже надійно розпізнає справжній mojibake UTF-8-as-legacy-codepage і просто скаже, коли не може знайти безпечне виправлення, замість того, щоб повертати впевнену неправильну відповідь.
Мій текст десь завантажено?
Ні. Виявлення та відновлення повністю виконуються у вашому браузері з використанням тих самих таблиць кодування, які він уже постачає для відтворення веб-сторінок — текст ніколи не залишає ваш пристрій.