Object返回值 过滤器设置了UTF8 返回对象会设置为utf-8 但返回String类型时会乱码 需要在注解处设置
produces = "text/plain;charset=utf-8"这是为什么
Object返回值 过滤器设置了UTF8 返回对象会设置为utf-8 但返回String类型时会乱码 需要在注解处设置
produces = "text/plain;charset=utf-8"这是为什么
在 SpringMVC 中,框架底层会自动添加一个 CharacterEncodingFilter 过滤器来处理编码问题,如果你在 web.xml 中自定义了一个编码过滤器,那么就会导致两个过滤器同时起作用,从而导致一些问题。为了避免这种问题,你可以在自定义的编码过滤器中设置 dispatcherTypes 为 FORWARD 和 REQUEST,这样就只会对请求进行过滤,而不会对转发进行过滤,从而避免了框架底层的编码过滤器和自定义的编码过滤器同时起作用的问题。
至于 Object 返回值过滤器设置了 UTF-8 返回对象会设置为 UTF-8,但返回 String 类型时会乱码的问题,是因为 String 类型的数据需要设置响应的 Content-Type 和编码格式,否则浏览器无法正确解析返回的字符串。因此,需要在注解处设置 produces = "text/plain;charset=utf-8" 来指定响应的 Content-Type 和编码格式为 UTF-8,这样就可以避免返回的字符串出现乱码问题。