问题
I need to read a file which contains a group of symbols moved 65 in ASCII table. It means, for each symbol I am meant to do:
String.fromCharCode('¢'.charCodeAt(0)-65) // returns 'a'
But it is not working at all. I have asked friends of mine to do the test using Python inputting the same file and they got the correct result.
When I try to do the same work with Chrome File System it does not work at all. I can't get back the expected symbols. I think it is a problem with my encoding/charset plataform but I can't figure out what is and how fix it.
I have tried opening the file with other encoding:
var reader=new FileReader();
reader.readAsText(file, 'windows-1252'); // no success
reader.readAsText(file, 'ISO-8859-2'); // no success
Appreciate any help
回答1:
Problem is, your shifted text is no longer text by readAsText
criteria. Trying to read it with any standard codepage is not going to work.
You should read the file as binary with readAsArrayBuffer(), interpret it as unsigned 8-bit int array, shift the bytes, and then convert the result to string.
var buf = new Uint8Array(reader.readAsArrayBuffer(file));
buf = buf.map((byte) => byte-65);
var string = new TextDecoder("ascii").decode(buf);
来源:https://stackoverflow.com/questions/37884928/cant-fit-file-encoding-when-working-with-chrome-file-system-api