使用 Chrome 文件系统 API 时无法适应文件编码

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

我需要读取一个文件,其中包含一组在 ASCII 中移动了 65 位的符号 table。这意味着,对于我打算做的每个符号:

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

但它根本不起作用。我已经请我的朋友使用 Python 输入相同的文件进行测试,他们得到了正确的结果。

当我尝试用 Chrome 文件系统做同样的工作时,它根本不起作用。 我无法找回预期的符号。我认为这是我的 encoding/charset 平台的问题,但我不知道是什么以及如何解决它。

我试过用其他编码打开文件:

var reader=new FileReader();

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

感谢任何帮助

问题是,根据 readAsText 标准,您的移动文本不再是 text。尝试使用任何标准代码页阅读它是行不通的。

您应该使用 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);