任何字符都可以用UTF-16编码(使用java)吗?
我认为它可以,但我的代码编码为
CharsetEncoder encoder = Charset.forName("UTF-16LE").newEncoder();
ByteBuffer bb = encoder.encode(CharBuffer.wrap((String) value + '\0'));
抛出了一个CharacterCodingException
不幸的是,这只发生在客户而不是我自己身上,我没有关于违规字符的详细信息。
答案 0 :(得分:1)
char
的可能值不是有效的UTF-16序列。例如:
CharsetEncoder encoder = Charset.forName("UTF-16LE").newEncoder();
ByteBuffer bb = encoder.encode(CharBuffer.wrap("\uDFFF"));
此代码将引发异常。 U + DFFF是unpaired surrogate。