Calocybe: encoding detection

Beitrag lesen

Hi!

Viele Progamme erkennen automatisch den Zeichensatz eines Dokumentes.
Ich möchte das für XML-Files machen. Aber wie geht das?

Fuer beliebige Dateien geht das meines Wissens nicht hundertprozentig. Fuer XML-Dateien, die zwingend mit der XML-Deklarationszeile (<?xml version="1.0" ... ?>) anfangen, ist dies in der XML Spec itself beschrieben: http://www.w3.org/TR/REC-xml#sec-guessing (Appendix F).

Der Zeichensatz wird zwar im XML-File (wenn nicht UTF-16 oder UTF-8) angegeben, aber ich kann
diese Information ja erst lesen, wenn ich wenigstens ungefähr weis, in welchem Zeichensatz sie steht.

Ja, aufgrund der Restriktion, dass die XMLDecl am allerersten Byte der Datei stehen muss, kannst Du aber ohne Probleme bis dorthin lesen, falls das ueberhaupt noetig ist. Siehe Link.

Auch die Byte Order Markierungen sind von zweifelhaftem Nutzen.
Eine UTF-8 Datei fängt mit der BOM "EF BB BF" (3 Byte) an.

So? Laut der XML SPec hat UTF-8 gar keine BOM.

Ein normales Asci file, das mit der Zeichenfolge  anfängt, sieht dann aber aus, wie ein UTF-8 File.

Dann ist es aber kein XML-Dokument. Das ist der Punkt, weshalb die Autodetection fuer *beliebige* Dateien nicht 100% moeglich ist.

So long