为什么 UTF8 字符编码在我的项目中不能正常工作?

Why UTF8 character encoding doesn't work properly in my project?

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

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

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

  1. 当我从数据库中读取值并将其发送到客户端时,一切正常。
  2. 当我将控制器中的字符串值设置为 ModelAndView 对象时,它显示为 '??rv?zt?±r?? t??k?¶rf??r??g?©p'
  3. 当我通过 ajax 从客户端发送值作为 POST 变量并将其发送回客户端时,它显示为 'árvízt?r? tükörfúrógép'.

我将所有 .jsp 文件设置为 UTF8 编码:<%@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>

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

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

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

终于看到我想要的了。