0

我正在使用以下代码将 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”的内容是拉丁字符,请说

“这是一块手表”

然后上面的代码工作正常。

但是,如果文件中有非拉丁字符,请说“谢谢谢谢”

那么转换结果不正确。

希望有人可以帮助我,谢谢:)

4

1 回答 1

0

不是解决方案,但要找到问题,请通过获取这样的字符代码来验证数组

var str= "thank you 谢谢";
for(i = 0; i < str.length; i++) {
    console.log(str.charCodeAt(i));
}

编辑:

正如它所给出34的那样35874,很明显字符代码不是 16 位的。因为

35874 = 10001100 00100010 => 8 位 => 00100010 = 34

请检查文件的编码。另请参阅是否可以在getByteArrayFromFile. 通常一个字符集用于读取多个字节,如您在此示例中所看到的 - actionscript 函数

于 2013-06-09T03:13:14.990 回答