任何字符都可以用UTF-16编码(使用Java 8)

时间:2015-01-05 13:09:39

标签: java encoding character-encoding utf-16

任何字符都可以用UTF-16编码(使用java)吗?

我认为它可以,但我的代码编码为

CharsetEncoder encoder = Charset.forName("UTF-16LE").newEncoder();
ByteBuffer bb = encoder.encode(CharBuffer.wrap((String) value + '\0'));

抛出了一个CharacterCodingException

不幸的是,这只发生在客户而不是我自己身上,我没有关于违规字符的详细信息。

1 个答案:

答案 0 :(得分:1)

char的可能值不是有效的UTF-16序列。例如:

    CharsetEncoder encoder = Charset.forName("UTF-16LE").newEncoder();
    ByteBuffer bb = encoder.encode(CharBuffer.wrap("\uDFFF"));

此代码将引发异常。 U + DFFF是unpaired surrogate