Primer 1: � v datoteki, ki je v redu
Urejevalnik, predvajalnik ali brskalnik namesto č, š ali ž pokaže �? Datoteka je večinoma shranjena v starem kodiranju Windows-1250 (ANSI) ali ISO-8859-2, program pa jo bere kot UTF-8. Bajt šumnika v UTF-8 ni veljaven. Program zato pri prikazu vstavi nadomestni znak �. V datoteki pa je še vedno pravilni bajt.
Rešitev: Povlecite izvirno datoteko v polje zgoraj. Mojibuster pri branju prepozna kodiranje in datoteko pretvori v UTF-8. Pomembno: uporabite samo datoteko, ne kopirajte besedila iz programa. S kopiranjem postane � trajen. Več o starem kodiranju: pretvorba Windows-1250 v UTF-8.
Primer 2: � ali ? je shranjen v samem besedilu
Če je program besedilo shranil ali posredoval skupaj z nadomestnim znakom, izvirne črke ni več. Enako velja za ?. Programi ga vstavijo, ko znaka v ciljnem kodiranju ni. To se zgodi na primer pri shranjevanju kot ASCII ali pri zapisu v stolpec baze podatkov, ki ne pozna č.
Nazaj ni mogoče ničesar izračunati, ker se je vsak šumnik spremenil v isti znak. Mojibuster zato ne ugiba, ampak pokaže, koliko mest je prizadetih. Pomaga samo vir: ponovite izvoz ali uporabite varnostno kopijo.
Pogosti vzroki za vprašaje
- Baza podatkov: stolpec ali povezava uporablja
latin1aliascii, podatki pa prihajajo v UTF-8.latin1nima črkeč, zato jo MySQL zamenja z?–šinžpa pogosto ostaneta, ker ju to kodiranje pozna. Glejte MySQL in phpMyAdmin. - PHP brez nabora znakov: stran ali povezava z bazo nima nastavljenega UTF-8. Brskalnik takrat pokaže
�ali se v bazo shrani?. - PowerShell 5.1:
Export-Csvprivzeto zapisuje ASCII in šumnike zamenja z?. Glejte PowerShell. - Python:
encode('ascii', errors='replace')brez opozorila zamenja znake z vprašajem. Glejte Python in pandas. - Beležnica: pri shranjevanju kot ANSI se znaki, ki jih Windows-1250 nima (na primer emodžiji ali cirilica), spremenijo v
?. - Ukazna vrstica: konzola v sistemu Windows znake, ki jih njena kodna stran ne pozna, prikaže kot
?. Večinoma je napačen le prikaz, ne datoteka. - Starejši poštni programi: sporočilo brez navedenega kodiranja se pri prejemniku prikaže z
�ali?namesto šumnikov.
Kako ugotoviti, za kateri primer gre
- Datoteko odprite v urejevalniku, ki prikaže kodiranje, na primer v Notepad++. Če vrstica stanja kaže „ANSI” ali „Windows-1250”, gre za primer 1.
- Povlecite datoteko v Mojibuster. Če rezultat navaja, da je bila datoteka prebrana kot Windows-1250, in so črke spet tu, je šlo za primer 1.
- Če Mojibuster javi izgubljene znake, gre za primer 2. Takrat pomaga le nov izvoz.
Če namesto vprašajev vidite znake, kot sta ÄŤ namesto č ali Å¡ namesto š, gre za drugo napako – in to je skoraj vedno mogoče popraviti: kaj je mojibake.
Pogosta vprašanja
Ali lahko Mojibuster spremeni ? nazaj v črke?
Ne. ? lahko nadomešča katero koli črko, podatek je izgubljen. Mojibuster takih mest ne spreminja, ampak pokaže, koliko jih je.
Zakaj vidim � v enem programu, v drugem pa ne?
Potem je datoteka v redu, le eden od programov jo bere v napačnem kodiranju. Z Mojibustrom jo pretvorite v UTF-8 in oba programa jo bosta prikazala pravilno.
Kaj je znak �?
Nadomestni znak U+FFFD. Programi ga vstavijo, ko bajta ne morejo prebrati kot znak. Kaže na napako kodiranja in ni del pravega besedila.