Felix Riesterer: Enkodierungsproblem bei AJAX Aufruf ans lokale Dateisystem

Beitrag lesen

Hallo Ingrid,

vielleicht sollte ich noch hinzufügen, dass wenn man eine in ISO-8859-1 kodierte Textdatei via AJAX "laden" will, diese grundsätzlich als UTF-8 interpretiert erhält.

Als ich meine Textdatei in xhr.responseText vorliegen hatte, habe ich diesen Inhalt in eine <textarea> geschrieben und bei den üblichen Verdächtigen (deutsche Umlaute und das ß) wirre Zeichen erhalten. Die Inhalte in ISO-8859-1 wurden von JS als UTF-8 gedeutet.

Um das zu lösen, muss man versuchen, die Zeichenkodierung mittels xhr.overrideMimeType() "reparieren". In meinem Beispiel war das so:

var xhr = myCreateXmlHttpRequestObject();  
  
xhr.open("GET", "./verz/file.txt", true);  
  
// wahrscheinlich wirkungslos, [link:http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method@title=weil W3C das so will]  
xhr.setRequestHeader("accept", "text/plain; charset=iso-8859-1");  
  
// Zeichenkodierung nicht automatisch als UTF-8, sondern als ISO-8859-1 interpretieren  
if (xhr.overrideMimeType) { // Firefox / Safari  
    xhr.overrideMimeType("text/plain; charset=iso-8859-1");  
}  
  
xhr.send(null);

Vielleicht erspart das jemandem Stunden der Fehlersuche...

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)