1

単純な Java String オブジェクトがあり、XStream を使用してシリアライズ/デシリアライズしたいと考えています。シリアライゼーションはうまく機能しますが、たとえばロシア語で書かれたこの文字列のように、逆シリアル化の後、文字列のエンコーディングが壊れていることがわかりました。

この問題が Xstream の問題なのか、それともファイルの問題なのか、特定のエンコーディングで書き込む必要があるのか​​、誰か教えてください。

みなさん、よろしくお願いします!

4

2 に答える 2

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 ヘッダーのエンコーディング定義は無視されるためです。 .

于 2012-05-09T16:36:24.803 に答える
0

Xstream FAQを見て、「encoding」を検索してください。デフォルト以外のローカルエンコーディングを取得するには、独自のライターを提供する必要があるようです。

上記のコメントのように、この質問はそれをカバーしています:

XStream フレームワークを使用して UTF-8 をエンコードするにはどうすればよいですか?

于 2012-05-09T16:36:26.343 に答える