我有一个支持国际化的计划。我有条目,其中输入以日文字符提供。在使用JAXB以XML格式导出该条目时,日文字符在文件中看起来很好。已在XML文件中导出正确的字符。当解组XML文件作为Java对象获取数据时,我面临着问题。我没有得到适当的日本字符值。
这是我的编组代码:
OutputStreamWriter outputWriter = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
JAXB.marshal(xmlobj, outputWriter);
解组代码:
InputStreamReader inputReader = new InputStreamReader(xml, "UTF-8");
xmlobj = JAXB.unmarshal(inputReader, <JAVA_CLASS_TO_UNMARSHAL>);
我正在编组 - 解组的文本是:説明_1
在获取此记录时正确显示并将其显示给浏览器,但是在JAXB解组的情况下,会显示不正确的值。将其转换为HTML兼容代码后,我得到了值説明_1
,这实际上是日语字符的正确转换。它应该在浏览器上显示为正确的字符,但它不会这样做。它会向浏览器显示为HTML代码説明_1
。
我猜错了哪里?
答案 0 :(得分:0)
如果HTML包含
<html>
<body>
説明_1<br>
</body>
</html>
和像Firefox一样好的浏览器(我有31.0)应该显示説明_1
。您可以在问题中添加HTML部分吗?
如果您的浏览器不适合显示这些字符,您应该会看到类似
。
您报告显示説明_1
,如果您的HTML文字包含
&#35500;&#26126;_1<br>
{{1}}
这意味着转换为HTML无法正常工作。
再一次:检查您的HTML代码,以及它是如何从XML生成的。
答案 1 :(得分:0)
尝试在HTML标头中使用UTF-8。请注意,只更改标题中的字符集不会转换内容 - 您需要确保内容实际上也是UTF-8。
<Meta http-equiv = "Content-Type" content = "text / html; charset = UTF-8" >
答案 2 :(得分:0)
Wundwin Born指出的评论解决了这个问题。我忘记了unescape string。
以下是代码段。
org.apache.commons.lang.StringEscapeUtils.unescapeHtml(xmlString);