将Uint8Array转换为javascript中的字符串(带中文字符)

时间:2013-06-09 03:01:54

标签: javascript

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

“这是一块手表”

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

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

然后转换结果不正确。

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

1 个答案:

答案 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