2014-02-26 50 views
0

我的Web应用程序(Java/Tomcat/Spring/Maven)在处理特殊字符(如(十六进制92,十进制146))时遇到问题。这是作为另一个奇怪的角色进入我的应用程序。Spring/Tomcat不遵守UTF-8编码?

我已经看过this question和核实II在我所有的JSP文件,下面一行:

<%@ page contentType="text/html; charset=UTF-8" %> 

我也看了this question和验证,我有以下行我的Maven的pom.xml:

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

因此,据我所知,一切都应该以UTF-8编译和处理。但是,当我提交字符串Martin’s Auto Repair在弹簧绑定过程中显示在服务器上的是Martinâ\u0080\u0099s Auto Repair。这是由Tomcat交给我的应用程序的字符串。

更糟糕的是,这会回传给浏览器,因此再次提交已更改的字符串会一次又一次地展开奇怪的字符。

有什么建议吗?在这一点上,我不确定这是浏览器问题还是服务器问题。

+0

您是否也将_requests_作为UTF-8处理?你叫什么来提交?作为查询参数? – fge

回答

2

十六进制92是不以Unicode(http://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF)字符

视窗代码页1252是不是100%相同为Unicode。

+0

此外,它看起来像_somewhere_将UTF-8编码的字节流解析为ISO-Latin-1,或者您不会在输出中看到有趣的序列。 –

+0

谢谢你的回应。假设你的分析是正确的,那么这个问题的解决方案是什么?这是一个Tomcat配置问题吗?浏览器问题? – user3120173

+0

这是一个*一般*问题与我的设置,或者我碰巧选择了一个不起作用的特定示例(十六进制92)? – user3120173