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

时间:2016-10-07 13:49:53

标签: java spring encoding utf-8 wildfly-10

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

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

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

  1. 当我从数据库中读取值并将其发送到客户端时,一切正常。
  2. 当我在Controller中将String值设置为ModelAndView对象时,它显示为'?? rv?zt?±r ??吨-6 K -1¶rf?? R 11克?©P'
  3. 当我从客户端通过ajax将值作为POST变量发送并将其发送回客户端时,它显示为'árvízt?r? tükörfúrógép”。
  4. 我设置了所有编码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>
    

1 个答案:

答案 0 :(得分:3)

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

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

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

最后我可以看到我想要的东西。