我在某些PC上遇到Java Scripting API together with JavaScript的问题。在分析了转储的文件之后,我注意到在某些PC上,“ FF FF”正在被打印为“ 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);
最佳答案
您是在不指定编码的情况下将数据从字节转换为字符串(使用本地相关平台的默认编码),然后使用API文档中记录的writeBytes()
方法将其写入文件,因为丢弃了每个字符的顺序字节。
您期望什么?实际上,我很惊讶结果与原始数据完全没有相似之处。
您最可能应该做的是用以下内容替换最后两行:
outputfile.write(byte_data_array);
并永远记住:字节用于数据,字符串用于文本,如果在它们之间进行转换,则始终需要注意所使用的编码。