Kérdőjelek az ékezetes betűk helyett: mit jelent a ? és a �

Az ő, ű vagy é helyett ? vagy � jel áll a szövegben? A kettő hasonlít, de más az oka. Gyakran a fájl teljesen rendben van. Néha viszont a betűk már elvesztek. Itt kiderül, melyik esetről van szó.

Szöveggel és fájlokkal is működik:

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

Például Excel-exportok, adatbázis-mentések, feliratok vagy weboldalak forráskódja.

Javítás

  1. Húzd ide a fájlt, vagy illeszd be a szöveget
  2. A javítás automatikusan megtörténik
  3. Másold ki vagy töltsd le
vagy egyszerűen húzd ide a fájlt

1. eset: � egy hibátlan fájlban

A szerkesztő, a lejátszó vagy a böngésző � jelet mutat az ő, á vagy ű helyén? A fájl általában a régi Windows-1250 (ANSI) vagy ISO-8859-2 kódolásban van mentve, a program viszont UTF-8-ként olvassa. Az ékezetes betű bájtja UTF-8-ban érvénytelen. A program ezért csak a megjelenítéskor tesz a helyére � helyettesítő jelet. A fájlban továbbra is a helyes bájt van.

Megoldás: Húzd az eredeti fájlt a fenti mezőbe. A Mojibuster beolvasáskor felismeri a kódolást, és UTF-8-ra alakítja a fájlt. Fontos: magát a fájlt használd, ne a programból másolt szöveget. Másoláskor a � végleges lesz. A régi kódolásról bővebben: Windows-1250 átalakítása UTF-8-ra.

2. eset: a � vagy a ? bekerült a szövegbe

Ha egy program a helyettesítő jellel együtt mentette vagy továbbította a szöveget, az eredeti betű elveszett. Ugyanez igaz a ? jelre. A programok akkor írják be, ha a karakter nem létezik a célkódolásban. Ez történik például ASCII-ként mentéskor, vagy ha egy adatbázis-oszlop nem ismeri az ő betűt.

Visszafelé ebből semmi sem számolható ki, mert minden ékezetes betű ugyanarra a jelre cserélődött. A Mojibuster ezért nem találgat, hanem megmutatja, hány hely érintett. Csak a forrás segít: ismételd meg az exportot, vagy használj biztonsági mentést.

A kérdőjelek gyakori okai

  • Adatbázis: az oszlop vagy a kapcsolat latin1 vagy ascii kódolású, az adatok viszont UTF-8-ban érkeznek. A latin1 ismeri az á és az é betűt, de az ő és az ű betűt nem – ezért gyakran csak ez a kettő lesz ?. Lásd: MySQL és phpMyAdmin.
  • PHP karakterkészlet nélkül: az oldalon vagy az adatbázis-kapcsolaton nincs beállítva az UTF-8. A böngésző ilyenkor � jelet mutat, vagy ? kerül az adatbázisba.
  • PowerShell 5.1: az Export-Csv alapértelmezés szerint ASCII-t ír, és minden ékezetes betűt ? jelre cserél. Lásd: PowerShell.
  • Python: az encode('ascii', errors='replace') szó nélkül kérdőjelre cseréli a karaktereket. Lásd: Python és pandas.
  • Jegyzettömb: ANSI-ként mentéskor a Windows-1250-ben nem létező karakterek (például emojik vagy cirill betűk) ? jellé válnak.
  • Parancssor: a Windows konzolja ? jellel mutatja azokat a karaktereket, amelyeket a kódlapja nem ismer. Ilyenkor többnyire csak a megjelenítés hibás, a fájl nem.
  • Régi levelezőprogramok: a kódolás megadása nélkül küldött levélben a címzettnél � vagy ? áll az ékezetes betűk helyén.

Hogyan derül ki, melyik esetről van szó?

  1. Nyisd meg a fájlt egy olyan szerkesztőben, amely kiírja a kódolást, például a Notepad++-ban. Ha az állapotsorban „ANSI” vagy „Windows-1250” áll, az 1. esetről van szó.
  2. Húzd a fájlt a Mojibusterbe. Ha az eredmény szerint Windows-1250-ként olvasta be, és a betűk visszakerültek, az 1. eset volt.
  3. Ha a Mojibuster elveszett karaktereket jelez, a 2. esetről van szó. Ilyenkor csak egy új export segít.

Ha kérdőjelek helyett olyan jeleket látsz, mint Ĺ‘ vagy Å‘ az ő helyén, az egy másik hiba – és szinte mindig javítható: mi az a mojibake.

Gyakori kérdések

Vissza tudja alakítani a Mojibuster a ? jelet betűvé?

Nem. A ? bármelyik betűt jelentheti, az információ elveszett. A Mojibuster ezeket a helyeket nem módosítja, csak megmutatja, hány van belőlük.

Miért látok � jelet az egyik programban, a másikban viszont nem?

Akkor a fájl rendben van, csak az egyik program rossz kódolással olvassa. Alakítsd át a Mojibusterrel UTF-8-ra, és mindkét program helyesen mutatja.

Mi az a � jel?

Az U+FFFD helyettesítő karakter. A programok akkor teszik be, ha egy bájtot nem tudnak karakterként beolvasni. Kódolási hibát jelez, és nem része a valódi szövegnek.

További útmutatók