JAXB:无法正确读取日文字符

时间:2014-09-10 10:10:13

标签: java xml unicode jaxb

我有一个支持国际化的计划。我有条目,其中输入以日文字符提供。在使用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兼容代码后,我得到了值&#35500;&#26126;_1,这实际上是日语字符的正确转换。它应该在浏览器上显示为正确的字符,但它不会这样做。它会向浏览器显示为HTML代码&#35500;&#26126;_1

我猜错了哪里?

3 个答案:

答案 0 :(得分:0)

如果HTML包含

<html>
<body>
&#35500;&#26126;_1<br>
</body>
</html>

和像Firefox一样好的浏览器(我有31.0)应该显示説明_1。您可以在问题中添加HTML部分吗?

如果您的浏览器不适合显示这些字符,您应该会看到类似

的内容

您报告显示&#35500;&#26126;_1,如果您的HTML文字包含

,则可以使用&amp;#35500;&amp;#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);