简体   繁体   中英

Can't fit file encoding when working with Chrome File System API

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

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);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM