2012-09-16 8 views
10

Ich habe mit dem folgenden Problem zu kämpfen. Mit Javascript möchte ich den Zeichensatz eines Dateiinhalts ändern und diesen Inhalt dem Benutzer anzeigen.Get/set Dateicodierung mit Javascript FileReader

Ich habe eine Eingabe: Dateiform. Bei Änderung lese ich den Inhalt

$('#form input:file').change(function(event){     
    file = this.files[0]; 
    reader = new FileReader(); 
    reader.onload = function(event) { 
     result = event.target.result.replace(/\n/g,'<br />'); 
     $('#filecontents').html(result); 
    }); 
    reader.readAsText(file); 
}) 

Die Datei ist in Windows-1251. Ich möchte den Inhalt der Datei in eine andere Kodierung konvertieren und danach dem Benutzer präsentieren.

Ist dies mit Javascript möglich?

Grüße

Antwort

21

Wenn Ihre HTML-Seite in UTF-8 und die Datei ist in ISO-8859-1.

Dies funktioniert:

reader.readAsText(file, 'ISO-8859-1'); 

Ich habe keine Windows-1251-Datei, so dass ich es nicht in der Lage war, zu testen, aber es sieht so aus, dass die ‚CP1251‘ (von Google Chrome zumindest unterstützt wird), so:

reader.readAsText(file, 'CP1251'); 

Wenn nichts davon funktioniert. Dann sollten Sie die Formatierung manuell ändern. Leider kenne ich keine JavaScript-Bibliothek, die den Trick macht.

aus dem Unicode-Mapping here und von Delan Azabanianswer, sollten Sie verwalten eine Funktion erstellen, die von char Zeichenfolge in CP1251 in UTF-8 Zeichen konvertieren.

+0

In Bezug auf Ihren letzten Satz gibt es keine "Standard" -Funktion, um eine ISO-8859-1-Zeichenfolge in UTF-8 zu konvertieren? –

+0

Ich versuchte dies mit einer Shift-JIS-Datei wie folgt: reader.readAsText (f, "Shift-JIS"); , die in UTF-8 konvertiert wurde, einfach in Ordnung. Aber jetzt ist das Problem, wie man erkennt, dass die ankommende Datei in Shift-JIS kodiert ist ... weil, wenn ich versuche, eine UTF-8 codierte Datei in diese Funktion zu senden, scheint sie nicht richtig zu konvertieren. – starmandeluxe

Verwandte Themen