2009-08-11 3 views
5

Wir haben eine Anwendung, die eine Textzeichenfolge nimmt, die von einem Benutzer in ein Webformular eingegeben und in XML verpackt wird. Um die Dinge ein wenig zu verwirren, wird das XML als Body von Outlook-E-Mail-Nachrichten gesendet.UTF-8 oder ISO-8859-1 in XML

Da die Benutzer fast alles in das Webformular einfügen können (normalerweise aus Word), kann die Textzeichenfolge Nicht-ASCII-Zeichen (7 Bit) enthalten, wie sie für doppelte Anführungszeichen verwendet werden.

Die Zeichenfolge wird intakt per E-Mail übertragen, aber wenn wir den Microsoft XML-Parser verwenden, beschwert sie sich (zu Recht), dass das XML ungültige Zeichen enthält.

Eine schnelle Lösung ist, coding = "iso-8859-1" in den Header zu setzen. Ich frage mich jedoch, ob es besser wäre, die XML-Datei am Anfang in echtes UTF-8-Format zu codieren, da ich Artikel gelesen habe, die besagen, dass es für eine harmonischere Welt besser wäre, wenn jedes XML-Dokument in UTF-8 kodiert wäre ?

Aber ... werden wir Probleme haben, da das XML-Dokument tatsächlich über den Text einer E-Mail-Nachricht übertragen wird? Ich verstehe, dass UTF-8 ist eine Variable Byte-Länge-Kodierung-System Ich nehme an, 7-Bit-ASCII-und Escape-Zeichen verwenden, um anzuzeigen, "es gibt mehr Daten".

Eine weitere Option ist UTF-8, aber ersetzen Sie Nicht-ASCII-Zeichen durch die & #nnn; Format.

Jede Beratung in diesem ziemlich komplizierten Bereich geschätzt.

Prost, Rob.

+0

Eigentlich ist die Idee von & # nicht gut - während das Dokument korrekt geöffnet wird, wird es nicht korrekt im IE angezeigt. Die offenen/geschlossenen Anführungszeichen werden als Block angezeigt. –

+0

Der "Block" zeigt an, dass für die Schriftart, die verwendet wird, keine Glyphe zum Anzeigen des Zeichens verfügbar ist. – andynormancx

+0

ISO 8859-1 hat diese "intelligenten" Anführungszeichen nicht. Was also passieren wird, ist, dass die Bytes, die diese intelligenten Anführungszeichen darstellen, als zufällige andere ISO-8859-1-Zeichen enden, z. "quoted text". UTF-8 ist sicher. – MSalters

Antwort

6

Ich würde wahrscheinlich versuchen, UTF-8 wann immer möglich zu verwenden - es deckt nur mehr Boden und ist flexibler als ISO-8859-1, die z. Osteuropäische Charaktere bereits (versuche, Jiři oder so etwas in ISO-8859-1 zu schreiben - es wird kläglich scheitern).

Also, wenn Sie wirklich versuchen wollen, zu ändern (was ich applaudiere!), Dann würde ich UTF-8 gehen und nur auf ISO-8859-1 zurückgreifen, wenn Sie wirklich nicht UTF-8 arbeiten können.

MArc

7

Hier von außen Englisch-only-Land {1} Ich kann bestätigen, dass UTF-8 funktioniert überall in Ordnung und hat so für viele, viele Jahre getan. Ich habe Probleme beim Erinnern, seit wann MTA verkrüppelte E-Mails durch Strippen des 8. Bit (führt zu "Erfindungen" wie QP (die im Grunde das Symptom eher als das Problem zu beheben)) waren. Das passierte mit Sicherheit Mitte der 90er Jahre, obwohl UTF-8 schnell an Popularität gewann und iso-8859-1 ersetzte. Ich erinnere mich nicht, als ich wechselte, aber ich denke, es war mindestens vor dem Jahr 2000.

Apropos iso-8859-1, es wird nicht in der Lage sein, alle möglichen Eingaben von Ihren Benutzern abzudecken. Je nach Sprache werden möglicherweise andere iso-8859-Varianten benötigt (zum Beispiel für Finnisch und Walisisch), und trotzdem unterstützt die 8859-Familie keine Sprachen wie Chinesisch. UTF-8 in der anderen Hand sollte alles abdecken, so dass ich stark empfehle, dass zu ISO-8859-1.

{1} Dies könnte meine Erfahrung verzerren, da jedes Programm, das UTF-8 nicht vollständig unterstützt, als Mist betrachtet wird und dazu neigt, hier nicht verwendet zu werden.