【问题标题】:Why UTF8 character encoding doesn't work properly in my project?为什么 UTF8 字符编码在我的项目中不能正常工作?
【发布时间】:2016-10-07 13:49:52
【问题描述】:

我正在 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?? 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>

【问题讨论】:

  • 您是否尝试使用调试器单步调试您的代码,以查看字符串开始损坏的位置?
  • 托马斯:是的。在服务器端,无论值是来自客户端还是来自数据库,一切看起来都很好(显然手动设置 String 看起来也很好)。在客户端,我可以看到帖子中的内容。
  • 额外信息:当我将值写入 JSONObject 时,即使在服务器端,重音字符已经看起来很糟糕。
  • 我的意思是,如果我从客户端获取值并将其放入 JSONObject 中,它们在 JSONObject 中看起来很好。如果我手动输入值,它们看起来很垃圾。

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


【解决方案1】:

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

在我的 Maven 项目的 web 模块上,我必须设置源的字符编码: &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;

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

我终于可以看到我想要的了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2018-11-13
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多