Ajax Zeichenkodierung ISO 8859-1
ISO 8859-1 Zeichensatz, anstatt UTF-8 Kodierung für Übertragung verwenden
AJAX und ISO 8859-1
Vor einiger Zeit wurde ich damit beauftragt eine Internetseite zu erstellen, welche Seitenteile "dynamisch" per AJAX nachlädt. Die Internetseite selber sollte in ISO 8859-1 Kodiert werden.
Als ich mit dem Prototypen soweit war, musste ich jedoch feststellen, dass ich Probleme mit den Umlauten bekam, den AJAX verwendet standardmäßig UTF-8.
Nach langem Suchen, bin ich immer wieder auf das Selbe Problem gestoßen:
* Viele haben Probleme damit,
* aber keine vernünftige interoperable Lösung auffindbar,
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
http_request.setRequestHeader("encoding", "ISO-8859-1");
http_request.setRequestHeader("send-method", "application/x-www-form-urlencoded; charset=ISO-8859-1');
http_request.overrideMimeType('text/xml; charset=iso-8859-1')
Die Header in AJAX zu ändern, hat nicht wirklich - oder nur mit mäßigem Erfolg (für wenige Browser einsetzbar) funktioniert. Was somit keine akzeptable Lösung war. Also habe ich versuch die Header in der angeforderten Datei zu ändern...
Lösung (PHP)
Um aus dem AJAX UTF-8 dilemma zu gelangen, sollte nicht versucht werden die Header in AJAX, - sonder die Header in der Datei zu ändern, welche von AJAX nachgeladen wird.
header("Content-Type: text/html; charset=ISO-8859-1");
header("Content-Transfer-Encoding: 8bit");
Ändert man für die anzufordernde Datei die Header mit obigen zwei Zeilen, so wird die Übertragung in ISO 8859-1 und nicht in UTF-8 vorgenommen und unsere Probleme mit UTF-8 sind beseitigt!