2 Stimmen

Problem der Zeichenkodierung - Domänenübergreifendes Scripting

Ich habe eine Asp.Net-Webanwendung, bei der Benutzer ein Skript-Tag in ihre Webseite einfügen und Daten von meinem Server abrufen (mit JsonP und einem Generic Handler (ashx))

Die Daten sind in Hebräisch, und ich habe den Zeichensatz in der Antwort auf utf-8 gesetzt.

Wenn die Client-Website (die die Daten anzeigt) "Windows-1255" verwendet wird der Text nicht richtig angezeigt.

Das Skript kann in jede Webseite mit beliebigem Zeichensatz eingebunden werden.

Muss ich meine Daten konvertieren oder die Eigenschaft response charset anders einstellen?

Danke Yaron

3voto

bobince Punkte 512550

Wenn die Client-Website (die die Daten anzeigt) "Windows-1255" verwendet, kann ich den Text nicht richtig sehen.

Ja. Die Sache ist die: Wenn Sie einen Dienst <script> können Sie den Parameter 'charset' im Content-Type der Antwort auf einen beliebigen Wert setzen, aber der IE wird Sie ignorieren und stattdessen die Kodierung der Ursprungsseite verwenden. (Vielleicht auch einige andere Browser.)

Wenn Sie also JSONP oder ein anderes Skript-Tag-basiertes Mittel zum Einlesen von Daten verwenden, müssen diese Daten entweder in der gleichen Kodierung wie die Ursprungsseite oder in einfachem ASCII vorliegen. Wenn Sie einen externen Dienst für viele Webseiten in möglicherweise unterschiedlichen Kodierungen bereitstellen, müssen Sie sich an ASCII halten.

Das bedeutet, dass Ihr JSON-Encoder alle Nicht-ASCII-Zeichen in String-Literalen in ihre JS-escapte Form umwandeln muss, zum Beispiel \u20AC anstelle eines rohen €.

1voto

AnthonyWJones Punkte 182582

Wahrscheinlich ist es besser, wenn Sie Ihren Kunden gegenüber klar angeben, dass Ihre Schnittstelle die Kodierung UTF-8 verwendet. Wenn sie Ihre Daten an ihre Clients weiterleiten, sollten sie die Option Response.CharSet zu UTF-8. Natürlich tun Sie das bereits auf Ihrer Seite, oder?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X