XStreamのFAQによると、デフォルトのパーサはUTF-8ドキュメントのエンコーディングを保持せず、独自のエンコーダを提供する必要があります。どのようにこれを行うのですか?XStreamフレームワークを使用してUTF-8をエンコードするにはどうすればよいですか?
ありがとうございます!
XStreamのFAQによると、デフォルトのパーサはUTF-8ドキュメントのエンコーディングを保持せず、独自のエンコーダを提供する必要があります。どのようにこれを行うのですか?XStreamフレームワークを使用してUTF-8をエンコードするにはどうすればよいですか?
ありがとうございます!
UTF-8エンコーディングでライターを作成します。 XStreamのtoXMLメソッドの引数としてWriterを渡します。
XStream xstream = new xStream();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Writer writer = new OutputStreamWriter(outputStream, "UTF-8");
xStream.toXML(object, writer);
String xml = outputStream.toString("UTF-8");
また、そのライターを使用してXML宣言を組み込むこともできます。
writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
xStream.toXML(object, writer);
もう1つの解決策は、ドライバを使用して正しいエンコードでXStreamオブジェクトを開始することです。
XStream xstream = new XStream(new DomDriver("UTF-8"));
(デフォルト)PrettyPrintWriterが正しいエンコーディングでのOutputStreamによってラップされます:DomDriverを使用すると、これは次のようになります。 あなたはこのようになりますJeromyの例@、XStreamの現在のバージョンでは...しかし、このよう
しかし、DomDriverは遅いです。 –
をUTF-8ヘッダを追加することができませんでした:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8");
HierarchicalStreamWriter xmlWriter = new PrettyPrintWriter(writer);
xstream.marshal(object, xmlWriter);
return new String(stream.toByteArray(), "UTF-8");
+1のおかげで - ちょうどこの&出くわしドキュメントで簡単に見つけることができませんでした。 – davek
ありがとう、それはちょうど私の問題を解決しました。 – Jaycee