我正在尝试将 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 );
那我做错了什么? 谢谢!
最佳答案
DE4E 是代理对的 1/2。就其本身而言,它是无效的。它将转换为?或被 OutputStreamWriter 丢弃。如果您使用 java.nio 类,您可以看到错误。
关于Java String->unicode->字符串转换不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480036/