Codierung der Hölle! JSON-ajax-Anfrage (utf-8) Latin1 Großbuchstaben

Ich habe in Folgendes problem: die javascript-lib, die ich arbeite nutzt JSON cross-domain-requests, um Daten aus einer Ruby on Rails-backend:

function getData()
{
    $.ajaxSetup({ 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")} })

    $.ajax({ 
                url: backend_server + '?callback=parseData&op=516',
        contentType: "application/json; charset=utf-8",
        dataType: 'jsonp',
        success: function (xml) {
           //console.log('success');
        }
    });
}

Die Datenbank, aus der RoR bekommt die Daten verwendet latin1 intern aber, wenn der Speicher dient richtig, diese Art von JSON-requests können nur durchgeführt werden mit UTF-8.

Der Webseite-header liest:

Content-Type    text/html; charset=ISO-8859-1

Und die Seite der metatag ist auch ISO-8859-1:

<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>

Nun, nach dem abrufen der Daten aus der Anforderung, meine Javascript-Bibliothek würde analysiert werden, und, schließlich, fügen Sie es zu einem bestimmten div in der Seite (mit der neuesten JQuery, nicht, dass es darauf ankommt). Alle die lateinischen Buchstaben wurden falsch angezeigt.

Bemerkte ich, dass verschiedenen Browsern interpretiert diese Zeichen unterschiedlich (bei einigen funktionierte es gut, für andere... nicht so viel). Ich am Ende macht eine geringfügige änderung zu einer Funktion utf8_decode fand ich hier (die Erkennung der user-agent und das überspringen der Verarbeitung völlig für Safari, IE und Opera) aber am Ende habe ich immer noch nicht anzeigen kann, spezielle lateinische Großbuchstaben mit wie "É", "Í", "À", "Á", "Â" oder "Ã".

Irgendwelche Ideen? Ich bin ziemlich verloren, und könnte ein paar Tipps.
Vielen Dank im Voraus,
J.

PS: der top-Kommentar auf der website ist auch meins.

Edit1: ich habe auch versucht, mit Hilfe unescape(encodeURIComponent(str_data)) aber es hat nicht funktioniert entweder

Wenn die Seite aus dem lateinischen, und der server verwendet, latin, warum würden Sie wollen, dass du json als utf-8. Entfernen Sie die utf-8 aus dem contentType-parameter im code oben. (JSON nicht utf-8)
Hmmm ich dachte, es musste! Spot an, danke! Bitte beantworten Sie die Frage so, dass ich Sie akzeptieren kann.

InformationsquelleAutor João Pereira | 2011-11-10

Schreibe einen Kommentar