【发布时间】:2014-10-16 19:46:24
【问题描述】:
我在使用 OutputStream 将某些字节写入文件时遇到了一个奇怪的问题。
问题似乎是由数据的“编码”引起的。
如果我明确写入输出流
saveFile.write(new byte[]{(byte)0xFF});
它工作正常,我在十六进制编辑器中看到 0xFF。
但是当我尝试使用字符串执行此操作时,它不起作用。示例:
scriptData = "some script data thats all text and stuff" + ((char)0xFF) + ((char)0x3B);
saveFile.write(scriptData.getBytes(Charset.forName("UTF-8")));
在我的十六进制编辑器中,我看到文本,然后是 0xC3BF,然后是 0x3B。为什么 0x3B 正确写入文件但 0xFF 更改为 0xC3BF?
我看到了另一个线程,但它涉及我没有使用 AFAIK 的 PrintStream。
谢谢。
【问题讨论】:
-
这是一个编码问题。 Code point 0xFF 必须是 UTF-8 编码,0xC3BF 是 UTF-8 编码。