2009-07-31 2 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 작성자를 사용하여 XML 선언을 포함 할 수도 있습니다.

writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"); 
xStream.toXML(object, writer); 
+2

한 덕분에 - 그냥 & 우연히 발견 문서에서 쉽게 찾을 수 없습니다. – davek

+0

고마워, 그냥 내 문제를 해결. – Jaycee

11

또 다른 해결책은 드라이버를 통해 올바른 인코딩으로 XStream 개체를 시작하는 것입니다.

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

(기본값) PrettyPrintWriter

올바른 인코딩으로 OutputStream에 래핑됩니다처럼이 보일 것 DomDriver 사용. 이 같을 것이다 제로미의 예 @, 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"); 
관련 문제