我有一个简单的java String对象,想要使用XStream对其进行序列化/反序列化。序列化效果很好,但是正如这个字符串用俄语写的那样,在反序列化后我发现字符串的编码被破坏了。
有人能告诉我这个Xstream的问题或文件的问题我需要用某种编码来编写它。
提前感谢大家!
答案 0 :(得分:2)
我认为这是因为对于较新的XStream版本,您需要将解码委托给您的XML流的Reader,以便在它到达时使用正确的编码方案对其进行正确解码解析。
看看这个,它可能会有所帮助:http://x-stream.github.io/faq.html
为什么XStream不尊重XML声明中的编码?
XStream架构基于IO读者和编写器,而XML声明是XML解析器的责任。从版本1.3开始,所有HierarchicalStreamDriver实现都遵循编码,但仅限于提供InputStream。如果XStream使用Reader,则必须自己使用适当的编码初始化阅读器,因为现在读者的任务是执行编码,并且没有XML解析器可以更改Reader的编码和XML中的任何编码定义标题将被忽略。
答案 1 :(得分:0)
查看Xstream FAQ并搜索“编码”。看起来您必须提供自己的编写器来获取非默认的本地编码。
如上述评论所述,这个问题涵盖了它: