Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.3.16
-
None
-
windows 7
Description
copied from email in mailing list:
I have the following in my struts.xml
<action name="testutf8" class="TestXml">
<result name="success" type="xslt">
<param name="exposedValue">utf8</param>
<param name="location">testxml.xsl</param>
</result>
</action>
My testxml.xsl file looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="result">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
My TestXML.java file looks has the following
public Class TestXml {
private String utf8="hèllo world"; // a string with utf-8 character, getters+setters omitted here
public String execute throws Exception
{ return "success"; }}
When I request /testutf8 I get the following in the browser:
XML Parsing Error: not well-formed
Location: http://localhost:8080/testutf8
Line Number 1, Column 48:<?xml version="1.0" encoding="UTF-8"?><result>h�llo world</result>
-----------------------------------------------^
It seems the utf-8 character is not being handled properly. How can I make the xslt result type handle the utf-8 character correctly?
Upon further investigation, the response type header is only "text/xml", it is missing character encoding.
A workaround is to register a custom filter which forces utf-8 character encoding on the output, but ideally this should be handled within struts.
Let me know if more information is needed.