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

Can any character be encoded in UTF-16 (using Java 8)

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

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

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

已抛出 CharacterCodingException

不幸的是,这只发生在客户身上,而不是我本人,我没有违规角色的详细信息。

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

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

这段代码会抛出异常。 U+DFFF 是一个 unpaired surrogate.