首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我得到一个使用UTF-16编码的奇怪的字节序列?

为什么我得到一个使用UTF-16编码的奇怪的字节序列?
EN

Stack Overflow用户
提问于 2019-03-27 20:43:26
回答 1查看 42关注 0票数 0
代码语言:javascript
运行
复制
byte[] byt = "君".getBytes(StandardCharsets.UTF_8);
for (byte b : byt) {
    System.out.println(Integer.toBinaryString(b));
}

输出:

代码语言:javascript
运行
复制
11111111111111111111111111100101
11111111111111111111111110010000
11111111111111111111111110011011

这是正确的。

但是:

代码语言:javascript
运行
复制
byte[] byt = "君".getBytes(StandardCharsets.UTF_16);
for (byte b : byt) {
    System.out.println(Integer.toBinaryString(b));
}

输出:

代码语言:javascript
运行
复制
11111111111111111111111111111110
11111111111111111111111111111111
1010100
11011

君的十六进制代码是101010000011011

所以:

代码语言:javascript
运行
复制
11111111111111111111111111111110
11111111111111111111111111111111

这是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-27 20:52:59

第一个到字节的0xFEFF

代码语言:javascript
运行
复制
11111111111111111111111111111110
11111111111111111111111111111111

是字节顺序标记-它们告诉其余部分是使用大端还是小端进行编码。

如果您不需要它们,可以显式设置编码-使用StandardCharsets.UTF_16LEStandardCharsets.UTF_16BE

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

https://stackoverflow.com/questions/55377498

复制
相关文章

相似问题

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