首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UTF-16 in和UTF-16发行于java

UTF-16 in和UTF-16发行于java
EN

Stack Overflow用户
提问于 2015-04-15 11:15:42
回答 1查看 2.2K关注 0票数 3

我有一个文件,当显示与geanny *显示UTF-16BE。如果我试图在Java中将这个文件转换成不同的编码(假设它是UTF-16BE,一个问号(?)每次出现在新创建的文件的开头。如果我假设它在UTF-16中(这不是真的),那么转换后的文件就会被转换为ok,在开始时没有任何问号。有人能解释一下为什么会这样吗?

Bellow是我用过的代码的片段:

代码语言:javascript
复制
    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是一个文本编辑器

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-15 11:22:52

您的问题是BOM (字节顺序标记)。

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29648752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档