zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Ajax: Eurozeichen übergeben

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 25.01.2015, 22:29
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 07.10.2014
Beiträge: 88
seerose befindet sich auf einem aufstrebenden Ast
Standard 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);
In PHP sieht es so aus:
PHP-Code:
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 utf8_urldecode($_POST['text']); 
Musst man in js jedes Feld mit encodeURIComponent behanddeln?
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?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 26.01.2015, 02:02
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 10.12.2006
Beiträge: 887
threadi sorgt für eine eindrucksvolle Atmosphärethreadi sorgt für eine eindrucksvolle Atmosphäre
Standard

Welchen Zeichensatz verwende die Seite denn?
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 26.01.2015, 09:06
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 07.10.2014
Beiträge: 88
seerose befindet sich auf einem aufstrebenden Ast
Standard

<!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)
Mit Zitat antworten
  #4 (permalink)  
Alt 26.01.2015, 09:11
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 10.12.2006
Beiträge: 887
threadi sorgt für eine eindrucksvolle Atmosphärethreadi sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich sprach vom Zeichensatz nicht vom HTML-Standard.
Mit Zitat antworten
  #5 (permalink)  
Alt 26.01.2015, 18:05
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 07.10.2014
Beiträge: 88
seerose befindet sich auf einem aufstrebenden Ast
Standard

<meta charset="iso-8859-1" />
stelle ich auf utf-8 werde die Umlaute nicht korrekt dargestellt.
Mit Zitat antworten
  #6 (permalink)  
Alt 27.01.2015, 01:06
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 10.12.2006
Beiträge: 887
threadi sorgt für eine eindrucksvolle Atmosphärethreadi sorgt für eine eindrucksvolle Atmosphäre
Standard

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.
Mit Zitat antworten
  #7 (permalink)  
Alt 27.01.2015, 09:37
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

AJAX ist im Prinzip grundsätzlich utf-8. Theoretisch läßt sich das zwar ändern, das ist aber unzuverlässig und du müßtest das auch dem AJAX Objekt mitteilen.

Allderings verstehe ich dein Codefragment auch nicht. An welcher Stelle brauchst du sowas?

Zitat:
Zitat von seerose Beitrag anzeigen
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,
Wer hält das denn für falsch? Umgekehrt macht die Aussage Sinn. Es gibt viele die es für richtig halten eine Kodierung zu verwenden die eine HTML Kodierung von Sonderzeichen vermeidet.
Mit Zitat antworten
  #8 (permalink)  
Alt 27.01.2015, 09:44
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von seerose Beitrag anzeigen
Und sobald ein +Zeichen im Text vorhanden ist, crash der Übergabestring
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.
Mit Zitat antworten
  #9 (permalink)  
Alt 27.01.2015, 11:10
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 2.247
cloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von seerose Beitrag anzeigen
<meta charset="iso-8859-1" />
stelle ich auf utf-8 werde die Umlaute nicht korrekt dargestellt.
Dann sind deine Umlaute prinzipiell nicht korrekt in der Datenbank. Prinzipiell gibt es heutzutage keinen Grund mehr, warum Seiten kein UTF-8 verwenden.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:19 Uhr.