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」の内容がラテン文字の場合、

「これは時計です」

その後、上記のコードは正常に機能します。

ただし、ファイルにラテン文字以外が含まれている場合は、「thank you 谢谢」と言ってください。

その場合、変換結果は正しくありません。

誰かが私を助けてくれることを願っています、ありがとう:)

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 に答える