Spring MVC和HTML表单的字符编码问题

时间:2011-12-16 12:29:10

标签: spring-mvc character-encoding html-form-post

我正在使用spring mvc。我已经设置了一个包含两个简单文本输入的Web表单。在控制器上,我使用@ModelAttribute让spring从Web表单构建bean。

问题出现在用户放置那些文本字段特殊字符时,如酒店和这种东西,spring不会将其读作utf-8,并且它们会成为通常的错误编码字符串。

我已经检查了web.xml,并且有utf-8编码过滤器,所有页面都被视为utf-8,浏览器正在发送正确的字符集标题。对于发生了什么有任何想法?

2 个答案:

答案 0 :(得分:0)

你可能想看看这个: http://forum.springsource.org/showthread.php?81858-ResponseBody-and-UTF-8

缺点是,如果使用带注释的方法,则使用的messageconverter具有默认字符集。您可以通过设置支持的媒体类型来更改web.xml中的此设置。

但是,如果您的服务不喜欢该媒体类型,则可能会收到406错误。您可以创建自己的字符串消息转换器并设置默认编码,但内置的HttpStringMessageConverter没有简单的方法。

或者,您可以将字符串重新编码为不同的字符集:

String newresponse = new String(responseString.getBytes("ISO-8859-1"), "UTF-8"); 

您可能还想在此处查看相关问题:How to get UTF-8 working in Java webapps?

答案 1 :(得分:0)

这个blog解释了你的问题的解决方案

解决方案很简单,通过添加produce =“text / plain; charset = UTF-8”来请求映射,可以强制spring mvc对返回的文本进行编码。