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

Spring mvc Spring MVC和HTML表单的字符编码问题,spring-mvc,character-encoding,forms,http-post,Spring Mvc,Character Encoding,Forms,Http Post,我正在与SpringMVC合作。我已经建立了一个web表单,它有两个简单的文本输入。在控制器上,我使用@modeldattribute让spring从web表单构建bean 当用户在这些文本字段中添加特殊字符时,就会出现问题,如酒店 这类东西,spring不把它读作utf-8,它们变成了通常的坏编码字符串 我已经检查了web.xml,这里有utf-8编码过滤器,所有页面都标记为utf-8,浏览器正在发送正确的字符集标题。你知道发生了什么吗?你可能想看看这个: 它的缺点是,如果您使用带注释的方法

我正在与SpringMVC合作。我已经建立了一个web表单,它有两个简单的文本输入。在控制器上,我使用@modeldattribute让spring从web表单构建bean

当用户在这些文本字段中添加特殊字符时,就会出现问题,如酒店 这类东西,spring不把它读作utf-8,它们变成了通常的坏编码字符串


我已经检查了web.xml,这里有utf-8编码过滤器,所有页面都标记为utf-8,浏览器正在发送正确的字符集标题。你知道发生了什么吗?

你可能想看看这个:

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

但是,如果您的服务不喜欢该媒体类型,则可能会出现406错误。您可以创建自己的字符串消息转换器并设置默认编码,但使用内置的HttpStringMessageConverter并不容易

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

String newresponse = new String(responseString.getBytes("ISO-8859-1"), "UTF-8"); 
您可能还想在此处查看相关问题:

这将解释问题的解决方案

解决方案很简单,add products=text/plain;charset=UTF-8要请求映射,可以强制SpringMVC对返回的文本进行编码