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

笑着哭i 提交于 2019-12-02 08:00:49

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!