Випадок 1: � у файлі, який насправді справний
Якщо редактор, плеєр субтитрів чи браузер показує � замість кирилиці, файл найчастіше збережено у Windows-1251, а програма читає його як UTF-8. Байти українських букв у Windows-1251 не є допустимими для UTF-8, тому програма під час показу підставляє замість них символ �. У самому файлі правильні байти залишилися.
Рішення: перетягніть початковий файл у поле вище. Mojibuster під час читання розпізнає кодування й перетворить файл в UTF-8. Важливо: беріть сам файл, а не копіюйте текст із програми – після копіювання � залишиться назавжди. Детальніше про це кодування: Windows-1251 в UTF-8.
Випадок 2: � або ? записано в сам текст
Якщо програма зберегла чи передала текст уже із символом заміни, початкову букву втрачено. Те саме зі знаком ?: програми ставлять його, коли букви немає в кодуванні, в яке зберігають текст. Наприклад, під час збереження в ASCII або запису кирилиці в стовпець бази даних, який її не підтримує.
Відновити тут нічого не можна: усі букви перетворилися на той самий знак, і слово Привіт стає просто ??????. Mojibuster не вгадує, а показує, скільки місць пошкоджено. Допоможе лише джерело: повторіть вивантаження або візьміть резервну копію.
Типові причини знаків питання
- База даних MySQL: стовпець або з'єднання має кодування
latin1чиascii, а дані надходять в UTF-8. Тоді MySQL замінює кирилицю на?– дивіться MySQL і phpMyAdmin. - Сайт на PHP без charset: сторінка не вказує кодування, і браузер читає текст у Windows-1251 як UTF-8. Тоді видно
�, хоча дані в базі можуть бути справні. - Блокнот, «Зберегти як ANSI»: на Windows із західними регіональними налаштуваннями ANSI – це не Windows-1251, і українські букви стають
?. - PowerShell 5.1:
Export-Csvза замовчуванням пише ASCII і замінює кирилицю на?– дивіться PowerShell. - Python:
encode('ascii', errors='replace')мовчки замінює букви на?– дивіться Python і pandas. - Консоль Windows: вона показує як
?букви, яких немає в її кодовій сторінці. Зазвичай неправильний лише показ, а не файл. - Старі поштові програми: лист без вказаного кодування відкривається з
�або?замість букв.
Як визначити, який у вас випадок
- Відкрийте файл у редакторі, що показує кодування, наприклад у Notepad++. Якщо в рядку стану написано «ANSI» або «Windows-1251», це випадок 1.
- Перетягніть файл у Mojibuster. Якщо файл прочитано як Windows-1251 і букви повернулися, це був випадок 1 – дивіться Windows-1251 в UTF-8.
- Якщо Mojibuster повідомляє про втрачені символи, це випадок 2. Тоді допоможе лише нове вивантаження.
Якщо замість знаків питання ви бачите щось на кшталт РџСЂРёРІС–С‚, це інша помилка, і її майже завжди можна виправити: що таке кракозябри.
Часті запитання
Чи може Mojibuster перетворити ? назад на букви?
Ні. ? може означати будь-яку букву, інформацію втрачено. Mojibuster не чіпає такі місця, але показує, скільки їх.
Чому в одній програмі видно �, а в іншій ні?
Значить, файл справний, і лише одна з програм читає його в неправильному кодуванні. Перетворіть файл в UTF-8 за допомогою Mojibuster, і обидві програми покажуть його правильно.
Що це за символ �?
Це символ заміни U+FFFD. Програми ставлять його, коли не можуть прочитати байт як букву. Він вказує на помилку кодування і не є частиною справжнього тексту.