Javascript Can';使用Chrome文件系统API时不适合文件编码
我需要读取一个文件,其中包含一组在ASCII表中移动的符号。这意味着,对于每个我想要做的符号:Javascript Can';使用Chrome文件系统API时不适合文件编码,javascript,google-chrome-app,html5-filesystem,Javascript,Google Chrome App,Html5 Filesystem,我需要读取一个文件,其中包含一组在ASCII表中移动的符号。这意味着,对于每个我想要做的符号: String.fromCharCode('¢'.charCodeAt(0)-65) // returns 'a' 但它根本不起作用。我已经要求我的朋友使用Python输入相同的文件进行测试,他们得到了正确的结果 当我尝试用Chrome文件系统做同样的工作时,它根本不起作用。 我无法找回预期的符号。我认为这是我的编码/字符集平台的一个问题,但我不知道是什么以及如何解决它 我已尝试使用其他编码打开文件:
String.fromCharCode('¢'.charCodeAt(0)-65) // returns 'a'
但它根本不起作用。我已经要求我的朋友使用Python输入相同的文件进行测试,他们得到了正确的结果
当我尝试用Chrome文件系统做同样的工作时,它根本不起作用。
我无法找回预期的符号。我认为这是我的编码/字符集平台的一个问题,但我不知道是什么以及如何解决它
我已尝试使用其他编码打开文件:
var reader=new FileReader();
reader.readAsText(file, 'windows-1252'); // no success
reader.readAsText(file, 'ISO-8859-2'); // no success
感谢您的帮助。问题是,根据
readAsText
标准,您的移位文本不再是文本。试图用任何标准代码页读取它是行不通的
您应该使用将文件读取为二进制,将其解释为无符号8位int数组,移动字节,然后单击
谢谢Xan,我会试试itXan,在写入文件时我也应该这样做吗?我想你可以反过来做类似的事情(使用TextEncoder)。它似乎与TextEncoder一起工作。但是,当我尝试输入readAsArrayBuffer建议的算法中获得的文件内容时,它会带来一个字符,代码
129
随附我的字母。
var buf = new Uint8Array(reader.readAsArrayBuffer(file));
buf = buf.map((byte) => byte-65);
var string = new TextDecoder("ascii").decode(buf);