How do I encode UTF-8 using the XStream framework?

老子叫甜甜 提交于 2019-11-27 11:20:02

问题


Per XStream's FAQ its default parser does not preserve UTF-8 document encoding, and one must provide their own encoder. How does one do this?

Thanks!


回答1:


Create a Writer with UTF-8 encoding. Pass the Writer as an argument to XStream's toXML method.

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");

You may also use that Writer to include the XML Declaration.

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



回答2:


Another solution would be to initiate the XStream-object with correct encoding, through a driver. Using the DomDriver this would look like:

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

The (default) PrettyPrintWriter will be wrapped by an outputstream with correct encoding. You could not add the UTF-8 header this way however...




回答3:


With a current version of XStream, @Jeromy's example would look like this:

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");


来源:https://stackoverflow.com/questions/1211624/how-do-i-encode-utf-8-using-the-xstream-framework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!