我正在Wildfly 10应用程序服务器下的Spring Framework中开发Web应用程序。我使用Eclipse IDE。

我遇到了无法解决的字符编码问题:从服务器端发送到客户端时,某些字符显示不正确。

我使用的测试String对象是“ árvíztűrő tükörfúrógép


当我从数据库中读取该值并将其发送到客户端时,一切似乎都很好。
当我在Controller中将String值设置为ModelAndView对象时,它显示为“ ?? rv?­zt?±r ??”。 t ?? k?¶rf?? r ?? g?©p'
当我通过ajax从客户端发送值作为POST变量并将其发送回客户端时,它显示为“árvízt?r?”。 tükörfúrógép'。


我设置了所有编码UTF8的.jsp文件:<%@page contentType="text/html" pageEncoding="UTF-8"%>

在Eclipse中,我将所有Maven模块文本文件编码都设置为UTF8。所有文件都在UTF8中。

我错过了什么?为了在客户端获得String值,我还应该设置什么?我应该以某种方式在Wildfly 10中设置字符编码吗?

有人可以帮我吗?如果您需要更多信息,请随时询问。谢谢。

编辑:将字符编码设置为Maven属性解决了第二种情况。现在,我只遇到第三种情况的问题:

<properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

最佳答案

经过近两个月的搜索,我能够找到解决问题的方法。除了配置服务器和Spring,我还需要添加两点:

在我的Maven项目的Web模块上,我必须设置源代码的字符编码:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

另外,当我发送JSONObject到客户端时,我必须设置字符编码:
@RequestMapping(value = "/historyContent.do", produces = { "application/json; charset=UTF-8" })

最后,我可以看到我想要的。

10-07 12:43