Ich schreibe eine Chrome-Erweiterung, die mit einer Website arbeitet, die ISO-8859-1 verwendet. Um etwas Kontext zu geben, macht meine Erweiterung das Posten in den Foren der Website schneller, indem sie ein bequemeres Postformular hinzufügt. Der Wert des Textfelds, in dem die Nachricht geschrieben wird, wird dann über einen Ajax-Aufruf (mit jQuery) gesendet.Wie kann ich eine Javascript-Zeichenfolge nach ISO-8859-1 umcodieren?
Wenn die Nachricht Zeichen wie á
enthält, erscheinen diese Zeichen als Á in der geposteten Nachricht. Wenn der Browser gezwungen wird, UTF-8 anstelle von ISO-8859-1 anzuzeigen, wird á
korrekt angezeigt.
Es ist mein Verständnis, dass Javascript UTF-8 für seine Strings verwendet, so ist es meine Theorie, wenn ich die Zeichenfolge nach ISO-8859-1 vor dem Senden transcodieren, sollte es mein Problem lösen. Es scheint jedoch keinen direkten Weg zu geben, diese Transcodierung in Javascript zu machen, und ich kann den serverseitigen Code nicht berühren. Irgendein Rat?
Ich habe versucht, das erstellte Formular Einstellung iso-8859-1 wie folgt zu verwenden:
var form = document.createElement("form");
form.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";
Und auch:
var form = document.createElement("form");
form.encoding = "ISO-8859-1";
Aber das scheint nicht zu funktionieren.
EDIT:
Das Problem belogen tatsächlich in wie jQuery wurde urlencoding die Nachricht (oder etwas in der Art und Weise), Ich reparierte diese indem ich jQuery nicht die Daten zu verarbeiten und es selbst zu tun, wie im folgenden gezeigt wird snippet:
function cfaqs_post_message(msg) {
var url = cfaqs_build_post_url();
msg = escape(msg).replace(/\+/g, "%2B");
$.ajax({
type: "POST",
url: url,
processData: false,
data: "message=" + msg + "&post=Preview Message",
success: function(html) {
// ...
},
dataType: "html",
contentType: "application/x-www-form-urlencoded"
});
}
Wie übermitteln Sie die Nachricht (z. B. vollständiges Beispiel eines fehlgeschlagenen AJAX-Codes)? –