【问题标题】:Random Bytes in array when encoding to different charachter set Java编码为不同字符集Java时数组中的随机字节
【发布时间】:2013-09-09 12:16:12
【问题描述】:

我正在尝试将文本转换为字节,但是当我打电话时:

Charset charset = Charset.forName("UTF-16");  
ByteBuffer bytes = charset.encode(toConvert.trim());
byte[] charsAsBytes = bytes.array();

我得到一个以 -2 和 -1 开头的数组。这些价值观从何而来?他们有什么意思吗,或者我可以跳过这些。默认字符集是 UTF-8。

【问题讨论】:

  • 您真的要使用 UTF-16 吗?如果不更广泛地使用,UTF-8 很有可能会更小。

标签: java character-encoding


【解决方案1】:

Java 中的字节被解释为带符号的二进制补码,因此 -2 和 -1 代表 0xFE0xFF。在 UTF-16 编码文本的开头,这是 byte order mark

引用维基百科:

在 UTF-16 中,BOM (U+FEFF) 可以作为 用于指示字节顺序(字节顺序)的文件或字符流 文件或流的所有 16 位代码单元。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2012-11-09
    相关资源
    最近更新 更多