Vprašaji namesto šumnikov: kaj pomenita ? in �

Namesto č, š ali ž je v besedilu ? ali znak �? Videti sta podobna, vendar imata različen vzrok. Pogosto je datoteka povsem v redu. Včasih pa so črke že izgubljene. Tukaj ugotovite, za kateri primer gre.

Deluje z besedilom in datotekami:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • SMI
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

Na primer izvozi iz Excela, izpisi baz podatkov, podnapisi za filme ali koda spletnih strani.

Popravi

  1. Povlecite datoteko ali prilepite besedilo
  2. Popravilo poteka samodejno
  3. Kopirajte ali prenesite
ali datoteko preprosto povlecite sem

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 latin1 ali ascii, podatki pa prihajajo v UTF-8. latin1 nima č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-Csv privzeto 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

  1. 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.
  2. 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.
  3. Č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.

Več navodil