Java String-> unicode->字符串转换不一致

ami*_*inz 3 java string unicode encoding

我正在尝试将java字符串序列化为字节数组,然后再将数组反序列化为字符串.它似乎工作正常,直到我测试了unicode字符\ude4e.由于某种原因,原始字符串"\ud34e"不等于反序列化的字符串.

这是序列化代码(在哪里encoding = Charset.forName( "UTF-16BE" )str = "\ud34e")

ByteArrayOutputStream out = new ByteArrayOutputStream();

Writer temp = new OutputStreamWriter( out, encoding );

temp.write( str );

temp.close();

byte[] bytes = out.toByteArray();

String deserialized = new String( bytes, encoding );
Run Code Online (Sandbox Code Playgroud)

那么我做错了什么?谢谢!

bma*_*ies 6

DE4E是代理对的1/2.它本身就是无效的.它将被转换为?或由OutputStreamWriter丢弃.如果使用java.nio类,则可以看到错误.