如何使用XStream框架编码UTF-8?

14 xml encode xstream utf-8

根据XStream的FAQ,它的默认解析器不保留UTF-8文档编码,并且必须提供自己的编码器.怎么做到这一点?

谢谢!

小智 35

使用UTF-8编码创建一个Writer.将Writer作为参数传递给XStream的toXML方法.

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");
Run Code Online (Sandbox Code Playgroud)

您也可以使用该Writer包含XML声明.

writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
xStream.toXML(object, writer);
Run Code Online (Sandbox Code Playgroud)

  • +1谢谢 - 偶然发现了这个并且无法在文档中轻松找到它. (2认同)

小智 13

另一种解决方案是通过驱动程序以正确的编码启动XStream对象.使用DomDriver,它看起来像:

XStream xstream = new XStream(new DomDriver("UTF-8"));
Run Code Online (Sandbox Code Playgroud)

(默认)PrettyPrintWriter将由具有正确编码的输出流包装.你无法以这种方式添加UTF-8头...