Frage

ich eine ASP-Access-Datenbank haben, die Strings in verschiedenen europäischen Sprachen enthält. Die Datenbank wurde vor von Agenten in den jeweiligen Ländern bevölkert. Es enthält Einträge mit akzentuierten usw. Zeichen, wie man erwarten würde. Wenn ich die Datenbank mit MS Access öffnen zeigen diese Zeichen bis fein. die das deutsche Äquivalent von „Open“ zeigt als „Öffnen“ zum Beispiel (hoffentlich können Sie ein „O“ mit 2 Punkten darüber sehen!).

I ASP-Code haben, der die Datenbank und gibt Datensätze in XML liest. Der Text wird in xmlEncode geleitet, um die XML zu bauen, aber das scheint nur mit den 5 Specials wie „<“, „&“ etc. zu behandeln Wenn ich die XML die akzentuierte Zeichen sind unverändert auszugeben.

<English>Open</English>
<German>Öffnen</German> 

Wenn ich an den Rohpakete mit Wireshark Ich sehe, dass die „Ö“ Byte hex D6, die es der dezimal Unicode und ISO zu sein scheint 8859-1 Wert.

Das Problem beginnt, wenn ich versuche, die XML in clientseitige JS zu analysieren. Erhalte ich:

"An invalid character was found in text content"

von IE. FF und Chrome glücklich die XML ohne Schluckauf akzeptieren, aber der Browser zeigt den „Ö“ Charakter wie ein Diamant mit einem Fragezeichen im Innern.

http://www.validome.org/xml/validate/ Berichte " Codierungsfehler.“

http://www.w3schools.com/dom/dom_validate.asp denkt, es ist in Ordnung.

Die XML ist UTF-8 codiert.

Was muss ich tun, um zu haben, IE meine XML akzeptieren klaglos?

Was muss ich tun Browsern korrekt das Zeug angezeigt zu haben?

War es hilfreich?

Lösung

Wie wissen Sie, die XML ist UTF-8 codiert? Ich weiß nicht, die MS-Umgebung gut, aber in Java ein weit verbreitetes Problem ist anzunehmen, dass nur den encoding="UTF-8" Header Schreiben bewirkt, dass es UTF-8 kodiert sein. Sie haben auch die Verfasser tatsächlich Schreib UTF-8 zu konfigurieren.

Sie haben gesagt, Wireshark zeigt hex D6, die den Strom UTF-8 tatsächlich nicht codiert anzeigen würde, ist, unabhängig davon, was der Kopf sagt.

Andere Tipps

Nun, ich bin nicht ganz sicher, warum, aber ich konnte es zum Laufen bringen. Angeregt durch Jims Kommentare änderte ich die XML-und-Antwort-Codierung zurück 8859-1 auf UTF-8, und auch die Codierung in dem META-Tag für die Seiten.

Es funktioniert jetzt ohne Beanstandung in IE, und der Browser zeigt nun die richtigen Zeichen.

Ich habe auch das rohe Bytes mit Wireshark diese Zeit und der "Ö" Charakter wird in der XML als 2 Bytes (0xC3, 0x96) anstelle von 1 Byte von 0xD6 codiert.

Also zusammenfassend:

In dem serverseitigen ASP-Code, um die XML-Antwort-Header zu generieren:

return ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>") ;

In dem serverseitigen ASP-Code zu erzeugen, um die Antwort selbst:

Response.ContentType = "text/xml; charset=UTF-8" ;
Response.Write (XMLResponse) ;

und im Web-Seiten-Header:

<head>
  <meta http-equiv="Content-type" content="text/html; charset=UTF-8"> 

Vielen Dank Jim.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top