Hans Würstchen: Ajax + Umlaute + ISO-8859-1 == Mist³

Beitrag lesen

Hallo zusammen,
es geht um die Sonderzeichen/Umlaute bei Ajax-Requests.

Szenario:
Eine Kundenadresse wird gändert, die neue Adresse wird per Ajax an eine PERL (Soap) übermittelt, diese schickt dir Daten weiter zu Webservice, wo sie endgültig in die DB gespeichert werden.

  
// Hier ein kleiner Ausschnitt  
function sendRequest(AKTION, URL, PARAMS) {  
 http_request = false;  
  
 if(window.XMLHttpRequest) { // Mozilla, Safari  
  http_request = new XMLHttpRequest();  
  
  if(http_request.overrideMimeType) {  
  // http_request.overrideMimeType('text/xml');  
  }  
 }  
 else if(window.ActiveXObject) { // IE  
  try {  
   http_request = new ActiveXObject("Msxml2.XMLHTTP");  
  }  
  catch(e) {  
   try {  
    http_request = new ActiveXObject("Microsoft.XMLHTTP");  
   }  
   catch (e) {}  
  }  
 }  
  
 if(!http_request) { alert("Fehler!") return false; }  
  
 http_request.onreadystatechange = function() { readResponse(AKTION, PARAMS); }  
 http_request.open("POST", URL, true);  
 http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
	  
 if(PARAMS) http_request.send(PARAMS);  
 else       http_request.send(null);  
}  

Problem:
Das ganze Projekt (eShop) läuft in ISO-8859-1 Encoding, das Ajax aber in UTF-8, was sich ja auch leider nicht umstellen lässt.
Das Resultat ist *scheiße*, Umlaute zerschoßen und die Kundenadresse somit unbrauchbar.

Lösung:

  • Das Dokument auf UTF-8 umstellen kommt nicht in Frage, da schon bald die Testphase beginnt und es zeitlich einfach nicht mehr machbar ist.

  • Ajax (setRequestHeader) auf ISO umstellen bringt nix.

  • Alle Eingabedaten escapen (HTML) und dann wieder unescapen (PERL) ist meiner Meinung nach ein ziemlich schlecher Programmierstil, daher wäre das die aller letzte Lösung.

Was kann ich tun? Bin am verzweifeln.