Wie zu zwingen, XMLHttpRequest zu verwenden ISO-8859-1-Zeichensatz nur?
Habe ich ISO-8859-1 Datenbank, so dass ich gerne die exchange-Anforderungen vollständig in diesem Zeichensatz. So, wie man content-type für die AJAX-requests in der richtigen Weise?
mögliche Duplikate von so ändern Sie ajax-charset?
dies ist genau der falsche Weg, Sie Vertrauen den client zum senden von Daten in bestimmten Codierung, aber Sie können in der Tat senden Sie beliebige Daten auf Ihren server. Eine robuste server-überprüfen Sie die Codierung für die Gültigkeit und tun, Umwandlung oder ablehnen.
Auch - was-Codierung zu tun hat, mit Daten, die gesendet werden deaktiviert, um die server?!
Stop bitte sprechen über SQL-injections und (vermutlich) PHP. Ich habe nicht-SQL-Datenbank und keine PHP. Meine Frage ist nicht über die Desinfektion der Eingabe.
Was für ein Volk!? Ich weiß, über all diese Themen, aber ich fragte ganz andere Frage.
dies ist genau der falsche Weg, Sie Vertrauen den client zum senden von Daten in bestimmten Codierung, aber Sie können in der Tat senden Sie beliebige Daten auf Ihren server. Eine robuste server-überprüfen Sie die Codierung für die Gültigkeit und tun, Umwandlung oder ablehnen.
Auch - was-Codierung zu tun hat, mit Daten, die gesendet werden deaktiviert, um die server?!
Stop bitte sprechen über SQL-injections und (vermutlich) PHP. Ich habe nicht-SQL-Datenbank und keine PHP. Meine Frage ist nicht über die Desinfektion der Eingabe.
Was für ein Volk!? Ich weiß, über all diese Themen, aber ich fragte ganz andere Frage.
InformationsquelleAutor Thevs | 2012-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl es schlecht zu tun (paar Kommentare weiter oben), würde dies funktionieren:
Wenn Sie mit jQuery: https://stackoverflow.com/a/553572/2527433
charset=...
syntax?Hoppla, Tippfehler, der jetzt behoben ist.
Die
charset
parameter ist ungültig für diesen content-Typ und einigen Servern sogar Aufträge ablehnen als fehlerhaften, wenn Sie tun. Es macht auch keinen Sinn, da die Gültigkeit des Inhalts in diesem content-Typ verwendet nur ASCII.Senden Sie den Zeichensatz zusammen mit der Anwendung/<irgendwas> wird nicht empfohlen. Viele APIs sind NICHT zu akzeptieren, mehrere Einstellungen in
Content-type
header.InformationsquelleAutor Hieu Nguyen
Gemäß der W3C-Spezifikation für XMLHttpRequest.send(), der charset am Ende wird UTF-8 in fast allen Fällen, je nach dem Wert von Daten. Noch irgendwelche Zeichensatz-Codierung, die Sie angeben, wird wahrscheinlich überschrieben werden mit UTF-8:
Gibt es einige wackeln-Zimmer für den User-Agent zu ermitteln, der-Kodierung: stellen Sie die AJAX-Seite mit der Kodierung ISO-8859-1. Die UA wird übernehmen dann ISO für alle Formen der Einreichung (es sei denn, die form, sonst gibt einer anderen Codierung) und wahrscheinlich AJAX submission, je nach Auslegung der W3C-Algorithmus.
Letztlich die einzig zuverlässige Lösung ist, um die Seite, die der Besucher sieht (mit AJAX), um ISO-8859-1, und dann stellen Sie sicher, es zu überprüfen und konvertieren von ISO auf dem back-end (Sie werden müssen, um die Desinfektion der alle Benutzereingaben, bevor Sie an die Datenbank sowieso, so fügen Sie einfach diese Umstellung auf den Prozess). Es gibt viele library-Funktionen in PHP oder Ihrer Sprache. Es gibt keine Möglichkeit zu garantieren Konformität mit den Spezifikationen anders, also unbedingt prüfen/sicherstellen, dass die Codierung auf dem back-end.
Ich brauche nicht bereinigen. Dot.
InformationsquelleAutor Jay Dansand
Ich glaube, ich muss erklären, encoding und charset-parameter. Diese betreffen, wie die raw-bytes
über das Netzwerk gesendet werden sollte, zu entschlüsseln.
Betrachten Sie zum Beispiel den Inhaltstyp
application/x-www-form-urlencoded
und die folgenden Daten:Weil es keine charset (in der Tat, charset ist illegal parameter für diesen content-Typ...) ISO-8859-1
es muss davon ausgegangen werden. Also die Decodierung des oben genannten, die in ISO-8859-1 Ergebnisse:
Nun ist es ein anderes format zu Dekodieren (form-urlencoded), die Ihre eigenen Regeln hat. Die aktuellen Spezifikationen sagen
dass die Prozent-Kodierung muss UTF-8 kodiert sein, also nachdem ich string -> string - transformation, die Sie erhalten
oben:
So, wie Sie sehen können, ist das format nie verwendet andere Zeichen als ASCII-so das charset nicht wirklich wichtig ist und
wird nicht unterstützt, sowieso.
Deinem eigentlichen problem nichts zu dem, was die Codierung der Prozent-Kodierung verwendet. Auch wenn Sie eine benutzerdefinierte Funktion, die Prozent-kodiert
in ISO-8859-1, der server wäre noch zu entschlüsseln, bei der Ankunft und codieren für die Datenbank. Sie haben
nichts zu gewinnen.
InformationsquelleAutor Esailija