如何强制javax xslt转换器使用utf-8编码国家字符而不是html实体?

我正在研究filter,它应该使用一些样式表来转换输出。 代码的重要部分如下所示:

PrintWriter out = response.getWriter(); ... StringReader sr = new StringReader(content); Source xmlSource = new StreamSource(sr, requestSystemId); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setParameter("encoding", "UTF-8"); //same result when using ByteArrayOutputStream xo = new java.io.ByteArrayOutputStream(); StringWriter xo = new StringWriter(); StreamResult result = new StreamResult(xo); transformer.transform(xmlSource, result); out.write(xo.toString()); 

问题是国家字符被编码为html实体而不是使用UTF。 有没有办法强制变压器使用UTF-8而不是实体?

您需要将输出方法设置为text而不是(default) xml

 transformer.setOutputProperty(OutputKeys.METHOD, "text"); 

但是,您还应该事先设置响应编码:

 response.setCharacterEncoding("UTF-8"); 

并指示webbrowser使用相同的编码:

 response.setContentType("text/html;charset=UTF-8");