Charset -Erkennung
Charakter -Codierungserkennung, Charset -Erkennung, oder Code -Seitenerkennung ist der Prozess von heuristisch Erraten Zeichenkodierung einer Reihe von Bytes, die Text darstellen. Die Technik wird als unzuverlässig anerkannt und wird nur verwendet, wenn sie spezifisch sind Metadatenwie ein HTTP Inhaltstyp: Der Header ist entweder nicht verfügbar oder wird als nicht vertrauenswürdig angenommen.
Dieser Algorithmus beinhaltet normalerweise die statistische Analyse von Byte -Mustern wie die Frequenzverteilung von Trigraphen von verschiedenen Sprachen, die auf jeder Code -Seite codiert werden, die erkannt wird; Eine solche statistische Analyse kann auch zur Durchführung verwendet werden Spracherkennung. Dieser Prozess ist nicht narrensicher, da er von statistischen Daten abhängt.
Im Allgemeinen führt eine falsche Charset -Erkennung zu Mojibake.
Einer der wenigen Fälle, in denen die Erkennung von Charset zuverlässig funktioniert UTF-8. Dies ist auf den großen Prozentsatz der ungültigen Byte-Sequenzen in UTF-8 zurückzuführen, so dass der Text in jeder anderen Codierung, die Bytes mit dem hohen Bitsatz verwendet äußerst Es ist unwahrscheinlich, dass ein UTF-8-Gültigkeitstest bestehen wird. Schlecht geschriebene Charset-Erkennungsroutinen führen jedoch nicht zuerst den zuverlässigen UTF-8-Test aus und können entscheiden, dass UTF-8 eine andere Codierung ist. Zum Beispiel war es üblich, dass Websites in UTF-8 den Namen der deutschen Stadt enthielten München wurden als mã¼nchen gezeigt, da der Code entschied, dass es sich um einen handelte ISO-8859 Codieren vor dem Testen, um festzustellen, ob es UTF-8 war.
UTF-16 Es ist ziemlich zuverlässig, aufgrund der hohen Anzahl von Newlines (U+000A) und Räumen (U+0020) zu erkennen, die beim Teilen der Daten in 16-Bit . Gemeinsame Zeichen muss überprüft werden, wenn Sie sich auf einen Test verlassen, um festzustellen, dass der Text gültig ist, schlägt UTF-16 fehl: die Windows -Betriebssystem würde den Ausdruck falsch erkennen "Bush versteckte die Fakten"(ohne neue Linie) in ASCII als Chinesisch UTF-16LEda alle Bytes für zugewiesene Unicode-Zeichen in UTF-16.
Die Erkennung von Charset ist in Europa besonders unzuverlässig, in einer Umgebung mit gemischten ISO-8859-Codierungen. Dies sind eng verwandte acht-Bit ASCII und alle Arrangements von Bytes sind gültig. Es gibt keine technische Möglichkeit, diese Engpässe zu unterscheiden und sie zu erkennen, dass sie auf die Identifizierung von Sprachmerkmalen wie Buchstabenfrequenzen oder Schreibweisen beruhen.
Aufgrund der Unzuverlässigkeit der heuristischen Erkennung ist es besser, Datensätze mit der richtigen Codierung ordnungsgemäß zu kennzeichnen. HTML Http sollte ihre Codierung angegeben haben außerhalb der Bandbreite Verwendung der Inhaltstyp: Header.
Inhaltstyp: text/html; charset = utf-8
Ein isoliertes HTML -Dokument, wie ein als Datei auf der Festplatte bearbeitet, kann einen solchen Header durch ein Meta -Tag in der Datei implizieren:
<Meta http-äquiv="Inhaltstyp" Inhalt="text/html; charset = utf-8" >
oder mit einem neuen Meta -Typ in HTML5[1]
<Meta Charset="UTF-8" >
Wenn das Dokument Unicode ist, kennzeichnen einige UTF -Codierungen das Dokument explizit mit einer eingebetteten Initial Byte -Bestellmarke (BOM).
Siehe auch
- Internationale Komponenten für Unicode - Eine Bibliothek, die eine Charset -Erkennung durchführen kann.
- Sprachidentifizierung
- Inhaltsschnüffeln
- Browser schnüffeln, Eine ähnliche heuristische Technik zur Bestimmung der Fähigkeiten eines Webbrowsers, bevor Inhalte dazu dienen.
Verweise
- ^ "4.2.5 Das Meta -Element". W3c.
Externe Links
- IMultilanguage2 :: DetectInputCodePage
- API -Referenz für die Erkennung von Zeichen der Intensivstation
- Referenz für cpdetektor Charset -Erkennung
- Mozilla Charset -Detektoren
- Java -Hafen von Mozilla Charset -Detektoren
- Delphi/Pascal -Hafen von Mozilla -Charset -Detektoren
- Uchardet, C ++ Gabel von Mozilla -Charset -Detektoren; Beinhaltet das Bash-Befehlszeilen-Tool
- C# Port der Mozilla -Charset -Detektoren
- Hebci, eine Technik zur Erkennung des in Formulareinreichungen verwendeten Zeichensatzes
- Frequenzverteilungen englischer Trigraphen