2016-06-17 11 views
1

Ich muss eine Datei lesen, die eine Gruppe von Symbolen enthält, die in ASCII-Tabelle 65 verschoben wurden. Es bedeutet, für jedes Symbol, das ich tun soll:Dateikodierung beim Arbeiten mit Chrome File System API nicht möglich

String.fromCharCode('¢'.charCodeAt(0)-65) // returns 'a' 

Aber es funktioniert überhaupt nicht. Ich habe Freunde von mir gebeten, den Test mit Python zu machen, indem sie die gleiche Datei eingeben und sie haben das korrekte Ergebnis erhalten.

Wenn ich versuche, die gleiche Arbeit mit Chrome File System zu tun, funktioniert es überhaupt nicht. Ich kann die erwarteten Symbole nicht zurückbekommen. Ich denke, es ist ein Problem mit meiner Kodierung/Zeichensatzplattform, aber ich kann nicht herausfinden, was es ist und wie es behoben wird.

habe ich versucht, die Datei mit anderer Codierung öffnen:

var reader=new FileReader(); 

reader.readAsText(file, 'windows-1252'); // no success 
reader.readAsText(file, 'ISO-8859-2'); // no success 

Jede mögliche Hilfe schätzen

Antwort

2

Problem ist, ist Sie verschoben Text nicht mehr Text von readAsText Kriterien. Der Versuch, es mit jeder Standard-Codepage zu lesen, wird nicht funktionieren.

Sie sollten die Datei als Binär lesen mit readAsArrayBuffer(), interpretieren Sie es als vorzeichenlose 8-Bit-int-Array, verschieben Sie die Bytes und dann convert the result to string.

+0

Danke Xan, ich werde es versuchen –

+0

Xan, soll ich das gleiche tun, wenn ich in eine Datei schreibe? –

+0

Ich nehme an, Sie könnten etwas Ähnliches in umgekehrter Reihenfolge (mit TextEncoder) tun. – Xan