我正在使用spring mvc。我已经设置了一个包含两个简单文本输入的Web表单。在控制器上,我使用@ModelAttribute让spring从Web表单构建bean。
问题出现在用户放置那些文本字段特殊字符时,如酒店和这种东西,spring不会将其读作utf-8,并且它们会成为通常的错误编码字符串。
我已经检查了web.xml,并且有utf-8编码过滤器,所有页面都被视为utf-8,浏览器正在发送正确的字符集标题。对于发生了什么有任何想法?
答案 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对返回的文本进行编码。