|
|||
Ajax: Eurozeichen übergeben
Ich beschäftige mich seit diesesWE mit Ajax, ich habe ein Formular, was über Ajax in einer Mysql Tabell gespeichert wird.
In params stehen die Werte: feld1=bremen&feld2=sabine&feld3… Eigentlich Easy, wenn die Sonderzeichen nicht rum zicken. Also zuerst waren die Umlaute kaputt, was ich dann mit escape gefixt habe, doch dann gelesen habe, escape ich veraltet, also lieber encodeURIComponent nehmen. Schon sind die Umlaute heil. Leider lässt sich das Eurozeichen € nicht beeindrucken, was in der DB als Fragezeichen gespeichert wird, wahrscheinlich sind noch mehr Sonderzeichen betroffen! Und sobald ein +Zeichen im Text vorhanden ist, crash der Übergabestring Z.z replace ich die Zeichen raus, und in php wieder rein. Code:
var url = "update.php"; xmlHttp.open("POST", url, true); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8"); xmlHttp.setRequestHeader("Content-length", params.length); xmlHttp.setRequestHeader("Connection", "close"); xmlHttp.send(params); PHP-Code:
oder kann man einmal params= encodeURIComponent(params) schreiben? Leider funktioniert es nicht, nur wenn ich jedes Feld damit behandele. Gibt es Lösungen wegen des Eurozeichens und des plus Zeichen? |
Sponsored Links |
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
also die Umlaute werden nicht codiert sondern stehen richtig im HTML-Quellcode, Grüße steht als Grüße, auch in der Mysql wird es so geschrieben. Es gibt viele, die das für Falsch halten, aber schaut man sich xhtmlforum.de oder ca. Bild.de an, sind die Umlaute auch nicht codiert, stehen 1:1 im Quellcode. Z.Z behelfe ich mich mit: js function codier(str){ str= str.replace("+", "#48;"); str= str.replace("€", "#8364;"); str= str.replace("&", "#38;"); return (str) } text= codier(document.getElementById("text").value) und in php: function codier($str) { $str= html_entity_decode(utf8_decode(urldecode($str))); $str= str_replace("#48;","+",$str); $str= str_replace("#8364;","€",$str); $str= str_replace("#38;","&",$str); return $str; } function utf8_urldecode($str) { $str = preg_replace("/%u([0-9a-f]{3,4})/i","+&#x\\1;",urldecode($str)); return html_entity_decode($str,null,'UTF-8'); } $text= codier($_POST["text"]); Geändert von seerose (26.01.2015 um 09:17 Uhr) |
|
|||
Das ist ebenfalls nicht die HTTP-Header-Angabe zum Zeichensatz. Bitte informiere dich über die Grundlagen von HTTP, z.B. hier:
Einstellung des HTTP-charset-Parameters und prüfe dann welchen Zeichensatz deine Webseite tatsächlich verwendet. Ebenso ist wichtig, dass alle Dateien deines Webs ebenso wie ggfs. vorhandene Datenbanken und Datenbankverbindungen im selben Zeichensatz initialisiert werden. So wie Du es hier beschreibst scheint das irgendwo nicht der Fall zu sein, wodurch ein Durcheinander an Zeichensätzen entsteht. |
|
||||
Dann machst du irgendetwas falsch. Prinzipiell musst du die Werte die du mit einem http Request überträgst immer URL-kodieren.
Bei einem Formular macht das der Browser automatisch, bei einem AJAX Request musst du das machen. Aber du darfst nicht den ganzen String kodieren, sondern nur die Werte und Schlüssel, da die Zeichen zum formatieren des URL-String erhalten bleiben müssen. Dann musst du dir auf der Server Seite auch keine Gedanken um die Bearbeitung machen. |
|
|||
Dann sind deine Umlaute prinzipiell nicht korrekt in der Datenbank. Prinzipiell gibt es heutzutage keinen Grund mehr, warum Seiten kein UTF-8 verwenden.
|
Sponsored Links |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Ajax - Datenbanksbruf: ASP Datei mit PHP code füllen? | braindead | Javascript & Ajax | 3 | 19.10.2009 14:35 |
Jquery AJAX Aufruf und Tablesorter | MoFu | Javascript & Ajax | 2 | 18.09.2009 10:09 |
Ajax und InternetExplorer | M@tes | Javascript & Ajax | 1 | 28.05.2009 18:45 |
Ajax ReadyState 3 | kevink | Javascript & Ajax | 2 | 30.04.2007 17:19 |
Buchrezension: AJAX - Frische Ansätze für das Webdesign | Flocke | Ressourcen | 2 | 01.11.2005 23:08 |