2012-05-09 4 views
1

У меня есть простой объект Java String и хочу сериализовать/десериализовать его, используя XStream. Сериализация работает хорошо, но поскольку эта строка написана, скажем, по-русски, после десериализации я узнаю, что кодировка String сломана.XStream encoding broken

Может кто-нибудь сказать мне, если эта проблема Xstream или проблема с файлом, и мне нужно записать его в определенной кодировке.

Спасибо всем заранее!

+0

http://stackoverflow.com/questions/1211624/how-do-i-encode-utf-8-using-the -xstream-framework Может быть, это поможет –

ответ

2

Я думаю, что это связано с тем, что с новой версией XStream вам необходимо делегировать декодирование для чтения XML-потока, чтобы он был правильно декодирован с использованием схемы правильного кодирования к моменту, когда он попадает в синтаксический анализ.

Взгляните на это, возможно, было бы полезно: http://x-stream.github.io/faq.html

Почему XStream не уважает кодировку в декларации XML?

Архитектура XStream основана на читателях и писателях IO, в то время как декларация XML несет ответственность за парсеры XML. Все реализации HierarchicalStreamDriver учитывают кодировку с версии 1.3, но только если вы предоставили InputStream. Если XStream потребляет Reader, вы должны сами инициализировать читателя соответствующей кодировкой, так как теперь задача читателя состоит в выполнении кодировки, и никакой синтаксический анализатор XML не может изменить кодировку Reader, и любое определение кодировки в заголовке XML будет проигнорировано ,

0

Посмотрите на Xstream FAQ и найдите «кодировку». Похоже, вы должны предоставить своему собственному автору, чтобы получить локальную кодировку не по умолчанию.

Как и в предыдущем комментарии, этот вопрос охватывает его:

How do I encode UTF-8 using the XStream framework?