Hallo Leute
Ich kämpfe momentan mit XML-Files, XPath und Schemas und versuche nun alle möglichen Fehlerquellen auszuschalten. Dabei habe ich natürlich auch einen Blick hinter die Unicode-Kulissen geworfen, was mehr in Verwirrung als in Klarheit endete: Mit meinem eigentlich ziemlich komfortablen (wenn auch äusserlich hässlichen) Texteditor UltraEdit habe ich mir ein per ASP generiertes XML-Dokument angeschaut, und zwar im Hex-Modus. Als Zeichensatz beim Erstellen habe ich UTF-8 verwenden wollen, was bei Microsoft als Codepage=65001 bekannt ist.
Zu Beginn war ich gleich etwas irritiert: Die ersten 31 Bits (bei 1 beginnend ;-) waren mit Einsen gefüllt (Hex: FF FE), was mir im Textmodus jedoch nicht angezeigt wurde. Dies scheint mir ein bei Unicode-Daten üblicher Datei-Anfang zu sein. Nur wofür ist der genau gut? Erkennt ein Programm daran das Unicode-Transformation-Format?
Gelegentlich führte dies zu Problemen, wenn beim Speichern etwas schief ging und diese Zeichenfolge in ein bekanntes Zeichen umgewandelt wurde (ich glaube nicht, dass dies mit Absicht geschieht). Damit kann ich jedoch leben, da es eher selten und vor allem bei ASP-Skripten passiert.
Was mich aber richtig stutzig machte ist, das trotz UTF-8 pro Zeichen zwei Bytes verwendet werden. Sollte das nicht anders sein? Ich dachte immer, bei UTF-8 würden die ASCII-Zeichen als 8-Bit-Sequenzen gespeichert, so wie es in http://de.wikipedia.org/wiki/UTF-8 beschrieben ist. Nach jedem ASCII-Zeichen folgt ein leeres Byte (Hex: 00), welches meine Daten unnötig auf die doppelte Grösse aufbläht. Was läuft denn hier genau ab?
Ich hoffe, dass jemand ein paar Antworten zu meinen Fragen posten kann. Falls du jetzt das ganze Posting vergebens gelesen hast, dann könntest du mir natürlich auch verraten, welche XML-Tools dein Leben vereinfacht haben ;-).
FG und besten Dank
Tom2