gpt4 book ai didi

java - java中的UTF-16BE和UTF-16问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:44:41 27 4
gpt4 key购买 nike

我有一个文件,当用 geanny 显示时 * 显示 UTF-16BE。如果我尝试将此文件在 Java 中转换为不同的编码(比如 ISO-8859-1),假设它是 UTF-16BE ,每次新建文件的开头都会出现一个问号(?)。相反,如果我假设它是 UTF-16(这不是真的),则转换后的文件转换正常,开头没有任何问号。谁能澄清为什么会出现这种行为?

波纹管是我使用的代码片段:


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 是一个文本编辑器

最佳答案

您的问题是 Material list (Byte Order Mark)。

如果您将字符集定义为 UTF-16,则 Java 会识别 BOM 并在读取后将其删除。 BOM 然后告诉 Java 字符流是 (UTF-16)BE。

如果您定义了 UTF-16BE,那么您告诉 Java 忽略 BOM,Java 会忽略它并将其写入您的目标文件。

关于java - java中的UTF-16BE和UTF-16问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29648752/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com