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

标签 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 );

那我做错了什么? 谢谢!

最佳答案

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

关于Java String->unicode->字符串转换不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480036/

相关文章:

java - Matlab deploytool 可以编译带有 javax.swing 元素的文件吗?

java - 如何防止绑定(bind)服务在 Activity 的运行时更改时被破坏(例如 : orientation)

javascript - 如何在不匹配特殊字符的情况下匹配 Unicode 特殊字母字符

java - 将局部变量添加到方法中会使它们变慢吗?

java - 使用spring security时如何在velocity宏中获取csrf token

php - 如何从多行中检索值作为单个字符串

unicode - 如何在 spacemacs 中按名称输入 unicode 字符?

带有 utf-16 代理项对的 javascript 和字符串操作

c++ - tokenizer 将字符串转换为 float

php - 如何检查是否可以从字母列表中创建单词?