Thread Encoding
(4 answers)
Opened by leo11 at 2009-05-30 18:45 2009-05-30T16:45:29 leo11 file errät anhand der Bytesequenzen, die in der Datei vorkommen, welchen Zeichensatz sie haben könnte. Das liefert zwar keine garantiert zuverlässigen Ergebnisse, funktioniert aber doch in den meisten Fällen. Quote Wenn Du eine ähnliche Art von Zeichensatzerkennung in Perl machen möchtest, gibt es dafür das Modul Encode::Guess. Quote Wieso sollten sie? Gerade wenn man eine Datei bearbeiten und nicht nur irgendwie Informationen auslesen will, sollte man sich besser nicht auf geratene Kodierungen verlassen... Quote Unicode ist ein Standard, der unter anderem beschreibt, welche Zeichen es überhaupt auf der Welt gibt, wie man sie klassifizieren kann und der jedem Zeichen eine eindeutige Identifikationsnummer zuordnet. Diese Identifikationsnummer hat nun aber nicht unbedingt etwas mit der Darstellung der Zeichen im Arbeitsspeicher oder in einer Datei zu tun. Die verschiedenen Kodierungen wie ISO-8859-1, UTF-8 oder UTF-16 beschreiben im Prinzip jeweils eine Zuordnung zwischen den Unicodeidentifikationsnummern von Zeichen und bestimmten Sequenzen von Bytes, die sich zum Ablegen im Arbeitsspeicher oder in Dateien eignen. Die Unterschiede zwischen den Kodierungen rühren daher, dass sie für verschiedene Zwecke gemacht sind: ISO-8859-1 speichert zum Beispiel jedes Zeichen in nur einem Byte ab, kann dafür aber fast nur Zeichen kodieren, die in den Sprachen Mitteleuropas vorkommen; UTF-8 stellt Zeichen als variabel lange Bytesequenzen dar, was unpraktisch zu verarbeiten sein kann und im Speicherverbrauch je nach Sprache des kodierten Textes stark variiert, dafür aber zumindest alle Unicodezeichen beherrscht und kompatibel mit ASCII ist; UTF-16 stellt die meisten Zeichen in jeweils zwei Bytes dar und beherrscht auch alle Unicodezeichen, verschwendet dafür aber zum Beispiel auch ein Byte Speicher pro Zeichen das eigentlich auch mit ASCII kodierbar wäre und man muss darauf achten, ob das Speicherformat little- oder big-endian ist. Darüberhinaus gibt es natürlich auch noch dutzende weitere Zeichenkodierungen... Quote Die Antwort lautet natürlich ja :-) Lies Dir zum Beispiel mal die Dokumentation des Perlmoduls Encode oder die Manpages zu den Backendfunktionen von iconv durch, dann wirst Du feststellen, dass man in beiden Fällen beim Dekodieren für den Fall fehlerhafter Eingabedaten verschiedene Behandlungsmöglichkeiten einstellen kann. When C++ is your hammer, every problem looks like your thumb.
|