【发布时间】:2016-10-07 13:49:52
【问题描述】:
我正在 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'。
我把所有的.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