2009-07-31 5 views

答えて

33

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); 
+2

+1のおかげで - ちょうどこの&出くわしドキュメントで簡単に見つけることができませんでした。 – davek

+0

ありがとう、それはちょうど私の問題を解決しました。 – Jaycee

11

もう1つの解決策は、ドライバを使用して正しいエンコードでXStreamオブジェクトを開始することです。

XStream xstream = new XStream(new DomDriver("UTF-8")); 

(デフォルト)PrettyPrintWriterが正しいエンコーディングでのOutputStreamによってラップされます:DomDriverを使用すると、これは次のようになります。 あなたはこのようになりますJeromyの例@、XStreamの現在のバージョンでは...しかし、このよう

+0

しかし、DomDriverは遅いです。 –

3

を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"); 
関連する問題