Prípad 1: � v súbore, ktorý je v poriadku
Editor, prehrávač alebo prehliadač ukazuje namiesto ť, ž alebo ô symbol �? Súbor je väčšinou uložený v starom kódovaní Windows-1250 (ANSI) alebo ISO-8859-2, no program ho číta ako UTF-8. Bajt písmena s mäkčeňom či dĺžňom nie je v UTF-8 platný. Program preto pri zobrazení vloží náhradný znak �. V súbore je však stále správny bajt.
Riešenie: Pretiahnite pôvodný súbor do poľa vyššie. Mojibuster pri čítaní rozpozná kódovanie a prevedie súbor do UTF-8. Dôležité: použite priamo súbor, nekopírujte text z programu. Kopírovaním sa � stane trvalým. Viac o starom kódovaní nájdete na stránke prevod Windows-1250 na UTF-8.
Prípad 2: � alebo ? je uložený priamo v texte
Ak program uložil alebo odovzdal text aj s náhradným znakom, pôvodné písmeno je preč. Rovnako je to s ?. Programy ho vkladajú, keď znak v cieľovom kódovaní neexistuje. Stáva sa to napríklad pri uložení ako ASCII alebo pri zápise do stĺpca databázy, ktorý ľ nepozná.
Spätne sa z toho nedá nič vypočítať, lebo každé písmeno s diakritikou sa zmenilo na ten istý znak. Mojibuster preto nehádá, ale ukáže, koľko miest je postihnutých. Pomôže len zdroj: zopakujte export alebo použite zálohu.
Typické príčiny otáznikov
- Databáza: stĺpec alebo pripojenie používa
latin1aleboascii, no dáta prichádzajú v UTF-8. Kódovanielatin1nemáľ,ťanič, a MySQL ich nahradí znakom?. Pozrite MySQL a phpMyAdmin. - PHP bez znakovej sady: stránka alebo pripojenie k databáze nemá nastavené UTF-8. Prehliadač potom ukazuje
�alebo sa do databázy uloží?. - PowerShell 5.1:
Export-Csvzapisuje v predvolenom nastavení ASCII a písmená s diakritikou nahradí znakom?. Pozrite PowerShell. - Python:
encode('ascii', errors='replace')potichu nahradí znaky otáznikom. Pozrite Python a pandas. - Poznámkový blok: pri uložení ako ANSI sa znaky, ktoré Windows-1250 nemá (napríklad emoji alebo azbuka), zmenia na
?. - Príkazový riadok: konzola Windows ukazuje znaky, ktoré jej znaková sada nepozná, ako
?. Väčšinou je zlé len zobrazenie, nie súbor. - Staršie e-mailové programy: správa bez uvedeného kódovania sa u príjemcu zobrazí s
�alebo?namiesto diakritiky.
Ako zistiť, o ktorý prípad ide
- Otvorte súbor v editore, ktorý ukazuje kódovanie, napríklad v Notepad++. Ak stavový riadok ukazuje „ANSI“ alebo „Windows-1250“, ide o prípad 1.
- Pretiahnite súbor do Mojibustera. Ak výsledok uvedie, že súbor bol prečítaný ako Windows-1250, a písmená sú späť, išlo o prípad 1.
- Ak Mojibuster hlási stratené znaky, ide o prípad 2. Vtedy pomôže len nový export.
Ak namiesto otáznikov vidíte znaky ako Äľ namiesto ľ alebo š namiesto š, ide o inú chybu – rozsypaný čaj. Ten sa dá takmer vždy opraviť: čo je rozsypaný čaj.
Časté otázky
Vie Mojibuster zmeniť ? späť na písmená?
Nie. ? môže zastupovať akékoľvek písmeno, informácia je preč. Mojibuster také miesta nemení, ale ukáže, koľko ich je.
Prečo vidím � v jednom programe, ale v inom nie?
Potom je súbor v poriadku a len jeden z programov ho číta v nesprávnom kódovaní. Preveďte ho Mojibusterom do UTF-8 a oba programy ho ukážu správne.
Čo je znak �?
Náhradný znak U+FFFD. Programy ho vkladajú, keď nedokážu bajt prečítať ako znak. Ukazuje na chybu kódovania a nie je súčasťou skutočného textu.