解决Spring MVC @ResponseBody返回html中中文字符串乱码问题

最近有个应用,通过responsebody返回完整的html页面时出现乱码是异常的问题,因为是通过responsebody返回,所以一开始设置了text/plain的字符集,如下:

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
   <bean class="org.springframework.http.converter.StringHttpMessageConverter">
     <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
   </bean>
  </mvc:message-converters>
</mvc:annotation-driven>

发现还是没解决。

于是看debug日志,发现spring StringHttpMessageConverter根据内容识别出是html,根据text/html进行处理,将其改成了html/plain,问题解决,如下:

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
   <bean class="org.springframework.http.converter.StringHttpMessageConverter">
     <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
   </bean>
  </mvc:message-converters>
</mvc:annotation-driven>

时间: 2024-10-07 05:16:03

解决Spring MVC @ResponseBody返回html中中文字符串乱码问题的相关文章

解决Spring MVC @ResponseBody返回中文字符串乱码问题

引起乱码原因为spring mvc使用的默认处理字符串编码为ISO-8859-1,具体参考org.springframework.http.converter.StringHttpMessageConverter类中public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1"); 解决方法: 第一种方法: 对于需要返回字符串的方法添加注解,如下: @RequestMapping(value=&quo

解决Spring MVC ResponseBody 乱码问题

解决Spring MVC ResponseBody 乱码问题 @RequestMapping(value="qxyjqyresult",produces = "plain/text; charset=UTF-8") @ResponseBody public String getQxyjqyResult(String filename) throws Throwable { return "中文" }

[Spring MVC] @ResponseBody返回结果乱码问题的解决

发现问题 在Controller类方法上加@ResponseBody,直接返回字符串,结果乱码. 如下所示: MockHttpServletResponse: Status = 200 Error message = null Headers = {Content-Type=[text/plain;charset=ISO-8859-1], Content-Length=[45]} Content type = text/plain;charset=ISO-8859-1 Body = { "Msg

Spring MVC @ResponseBody返回中文字符串乱码问题

朋友做小项目练手的时候遇到的,着实让他郁闷够呛..这个问题的确很恶心.. 项目中引用的json包,直接用@ResponseBody注解返回json字符串..有关这个的乱码问题网上很多,各种花样各种转码器方法,但是试了一遍基本都无效,很多已经过时了..这里说一下spring引的是3.2.8的jar包.这个也没什么好分析的,基本就是在尝试各种解决方案的有效性..最终有2种有效在spring3.0以上版本下.. @RequestMapping(value="/test", produces

Spring mvc responsebody 中文乱码问题

spring mvc在3.0中引入了responsebody这个注解,但是在源码中StringHttpMessageConverter 将默认编码写成了ISO-8859-1,并且是static final的,从网上搜了一堆,通过配置注入来解决,但是都是3.1的解决办法:看来只能通过重写+注入解决了,果然在网上搜到了一个贴了,试了下,可行~ 以下是帖子的一段~ @ResponseBody默认采取 public static final Charset DEFAULT_CHARSET = Chars

判断JSON是否为空 (用spring mvc @ResponseBody 自动返回的json串 )

判断JSON是否为空 (用spring mvc @ResponseBody 自动返回的json串 ) 知识分类:EXTJS  spring mvc json 记录时间: 20150708 简单描述:用json.length 属性长度来判断是否为空,在此过程中spring mvc 自动返回的json串是 字符串的类型,所以用.length的方式返回的则是字符串的长度(一般空的JSON 在此处返回的长度应为3),并不是数组的长度,在EXTJS中用Ext.decode(json); 则可以将字符串js

spring mvc @ResponseBody http报错406

项目使用的是spring mvc 3.2.4 ,在使用到@ResponseBody 的时候出现http 406的错误,解决方法: 在pom.xml中添加上一下代码就ok了. <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.2.3</version> <

Spring MVC 结合Velocity视图出现中文乱码的解决方案

编码问题一直是个很令人头疼的事,这几天搭了一个Spring MVC+VTL的web框架,发现中文乱码了,这里记录一种解决乱码的方案. 开发环境为eclipse,首先,检查Window->preferences->workplace->Text File Encoding,设置为GBK .vm文件中加入编码约束,举例如下 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Typ

SpringMVC项目中中文字符乱码问题及解决办法总结(非专业最优解决办法) -- ajax传值乱码; request.getParameter()乱码;

情况一: ajax中传值时是乱码(后台可以获取到中文字符,但用@ResponseBody返回时前台为乱码) 情况二: Controller 中 request.getParameter()获取到的是乱码 @RequestMapping(params = "method=submit") public String submit(HttpServletRequest request, ModelMap modelMap) throws Exception{ String uname =