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

Convert Uint8Array to string in javascript (with Chinese characters)

本文关键字:中文 字符 字符串 转换 Uint8Array javascript      更新时间:2023-09-26

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

"this is a watch"

则上面的代码可以正常工作。

但是,如果文件中有非拉丁字符,则说"谢谢你! !"

则转换结果不正确。

希望有人能帮助我,谢谢:)

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

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

因为它为35874提供34,很明显字符代码不是16位的。因为

35874 = 1000110000100010 => in 8 bits => 00100010 = 34

请检查文件的编码。还要查看是否可以在getByteArrayFromFile中指定编码。通常使用一个字符集来读取多个字节,你可以在这个例子中看到- actionscript函数