我使用以下代码将Uint8Array对象转换为字符串:
var fileData = cc.FileUtils.getInstance().getByteArrayFromFile("file.txt");
// fileData is a Uint8Array object
var dataString = "";
for(i = 0; i < fileData.length; i++) {
dataString += String.fromCharCode(fileData[i]);
}
alert(dataString);
如果“file.txt”的内容是拉丁字符,则说
“这是一块手表”
然后上面的代码工作正常。
但是,如果文件中有非拉丁字符说“谢谢谢谢”
然后转换结果不正确。
希望有人可以帮助我,谢谢:)
答案 0 :(得分:0)
不是解决方案,但要找到问题,请通过获取此类字符代码验证数组
var str= "thank you 谢谢";
for(i = 0; i < str.length; i++) {
console.log(str.charCodeAt(i));
}
编辑:
由于它为34
提供35874
,很明显字符代码不是16位。因为
35874 = 10001100 00100010 =&gt;在8位=&gt; 00100010 = 34
请检查文件的编码。另请参阅是否可以在getByteArrayFromFile
中指定编码。通常使用字符集来读取多个字节,如此处所示 - actionscript function