【发布时间】:2015-04-15 11:15:42
【问题描述】:
我有一个文件,当用 geanny * 显示时显示 UTF-16BE。如果我尝试将 Java 中的这个文件转换为不同的编码(比如说 ISO-8859-1),假设它是 UTF-16BE , 每次新建文件的开头都会出现一个问号 (?)。相反,如果我假设它在 UTF-16 中(这是不正确的),则转换后的文件会转换正常,开头没有任何问号。 谁能澄清为什么会出现这种行为?
Bellow 是我使用的代码中的一个 sn-p:
StringBuilder sb = new StringBuilder();
BufferedReader buff = new BufferedReader(new InputStreamReader(inputStream, utf16beCharset));
String line = null;
while ( (line = buff.readLine()) != null) {
sb.append(line);
sb.append('\n');
}
String output = new String(sb.toString().getBytes(neededCharset), neededCharset);
System.out.println(output);
* geanny 是一个文本编辑器
【问题讨论】:
-
必须是 BOM,这在 BE 模式下是不应该的(你已经知道它是 BE,对吧?)。
-
@Bram 如果这在 BE 中不是预期的,为什么会出现?
-
@artaxerxe BOM 不是 UTF-16BE 编码的一部分,所以它会显示一个问号。
-
@WonderWorld:如果 BOM 本身被转换为非 UTF 字符集而不是在转换之前被剥离,则会出现
?。
标签: java character-encoding utf-16