0

我在某些 PC 上遇到了Java Scripting API 和 JavaScript的问题。分析转储文件后,我注意到“FF FF”在某些 PC 上打印为“FD”。下面是代码片段:

var outputfile = new RandomAccessFile(f, "rw");
var byte_data_array = getMyByteArrayData(somebytearray); 
var data_string = new java.lang.String(byte_data_array);
outputfile.writeBytes(data_string);
4

1 回答 1

1

您正在将数据从字节转换为字符串而不指定编码(它使用本地相关的平台默认编码),然后使用 API 文档中记录的方法将其写入writeBytes()文件作为丢弃的高阶字节每个字符。

你期待什么?我实际上很惊讶结果与原始数据有任何相似之处。

您最可能应该做的是将最后两行替换为:

outputfile.write(byte_data_array);

并且永远记住:字节是用于数据的,字符串是用于文本的,如果在它们之间进行转换,则始终需要注意使用的是什么编码。

于 2013-05-03T12:16:54.873 回答