有老铁的项目出现个问题,就是用SpringMVC给前台返回一句话,是String类型的,然后前台接收到是乱码。

然后以为是简单的response的编码问题,就在方法体中开始给response设置编码,结果charset和ContentType都设置遍了,于事无补,看了下代码中的方法体,突然想到这是用SpringMVC框架返回消息的,跟response没多大关系啊,再怎么给response设置各种编码和类型,最后还是SpringMVC给返回消息的,于是在浏览器看了下请求头,发现乱码消息的ContentType是text/plain,而charset居然是ISO-8895-1类型的,怪不得会出现乱码。

于是开始搜索相关关键字,果然找到一篇帖子说SpringMVC默认就是ISO编码,可以以修改源代码的方式解决这个问题,于是打开源代码一看,果然是ISO-8895-1,可是打开的class文件,无法修改,不太懂如何修改源代码,自己写一个一模一样的包,类的方法试了一下就发现特别麻烦。

public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {  

    public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1"); 

还有一种方法是在SpringMVC的配置文件中对text/plain做编码配置,本以为这个方法肯定能成功,结果怎么配置配置都不管用,后来在别人的帖子中也看到有网友也是用这种方法做配置,不管用,看来这种方法不是特别通用,也许是我们的Spring或者SpringMVC的版本号不一样或者怎么地,反正就是不管用,通通不管用。

<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>

    还有这种配置方法:

<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" index="0">
</constructor-arg>
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>

最后在一个帖子中发现了一个大佬的解决方法,就是在方法体中加入一个produces参数,用这个参数对所需要改变的请求类型做编码设置,成功了!!!示例代码如下:

@RequestMapping(value="/testGarbled.do", produces="text/html;charset=UTF-8" )
@ResponseBody
public String testGarbled(ModelMap modelMap) {
return "中文乱码";
}

总结一下,最后这种方法是最实用最简单的方法,因为有时项目中用到text/plain的地方很少,其他的text/html类型的很少会出现乱码,所以这个疗效最快。

附上两篇参考链接:

http://ask.csdn.net/questions/149031#answer_tab_upload

http://blog.csdn.net/yfisaboy/article/details/30059969

这两篇文章的评论区对我解决这个问题也是特别有帮助的。

关于SpringMVC中text/plain的编码导致的乱码问题解决方法的更多相关文章

  1. php中隐形字符65279(utf-8的BOM头)问题和fwrite写入文件bom头导致的乱码问题解决

     php中隐形字符65279(utf-8的BOM头)问题 今天在CSDN看到一个php输出空白隐形字符65279的问题,在网上找了下,发下这个65279字符是php用来标记文件是utf-8编码的,输出 ...

  2. MySQL对JSON类型UTF-8编码导致中文乱码探讨

    前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有点不解,于是乎,有了本文,我们来学习字符编码,在学习的过程中,我发现对于MySQL中JSON类型的编码导致数据中 ...

  3. Java中FTPClient上传中文目录、中文文件名乱码问题解决方法【好用】

    转: Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 问题描述: 使用org.apache.commons.net.ftp.FTPClient创建中文目录.上传中文文件名时,目录 ...

  4. ASP 编码转换(乱码问题解决)

    ASP 编码转换(乱码问题解决) 输出前先调用Conversion函数进行编码转换,可以解决乱码问题. 注,“&参数&”为ASP的连接符,这里面很多是直接调用的数据库表字段,实际使用请 ...

  5. 解决问题:SpringMvc中转发的html文件中文是乱码

    目录 1.环境说明,以及前言 2.问题描述: 3.失败的方法(这里写失败并不代表在其他情况不管用) 3.1 html网页本身编码不是UTF-8(推荐尝试) 3.2 web.xml中没有设置配置编码方式 ...

  6. 笔记32 SpringMVC中使用静态资源、处理中文乱码

    一.静态资源的使用 在WebConfig.java中有如下代码段 @Override // 配置静态资源处理 public void configureDefaultServletHandling(D ...

  7. SpringMvc中两个Controller类之间传递参数的方法

    使用SpringMvc框架,在访问ControllerA的时候,将A里面的参数传递到ControllerB中.适用于同一框架下两个不同Controller或者由rpc(dubbo)连接的两个工程里的C ...

  8. ANSI编码导致的乱码

    美帝那边的一个 donet 项目,打开后发现一段string里面各种乱码.一通折腾后发现是编码格式问题.这段string所在的类文件保存格式为ANSI,而不是VS默认的UTF-8. ANSI编码电脑是 ...

  9. Android 代码中文字在手机上显示乱码问题解决方法

    在学习Android过程中,用于测试时发现,代码中的中文在真机上会显示乱码, 网上查阅了些资料,参考如下: http://www.androidchina.net/3024.html http://b ...

随机推荐

  1. CNPM 遇到use strict的问题

    一.问题描述 [root@VM_123_144_centos node01]# cnpm install --save nodemailer /usr/lib/node_modules/cnpm/no ...

  2. how to install Web logic Server (WLS)

    a) Download artificts from: http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main ...

  3. web—URL不同形式地址的问题

    浏览网页时,不同的网站有不同的URL显示方式. 第一种形式: http://www.cnblogs.com/sylarmeng/p/6738695.html 具体的文章用数字(或组合字母)字符串来标识 ...

  4. YII缓存依赖的应用

    YII缓存依赖的应用 缓存 缓存依赖 Yii 缓存是提升Web应用性能的简便有效的方式.当我们在加载网页需要过多的时间,比如说查询时间过久,抑或是调用接口占用过多I/O,建立缓存是一个行之有效的方法, ...

  5. 安装lnmp集成环境

    具体配置看原文,不重新复述: 原文:https://lnmp.org/install.html 因为配置数据库主从,需要保持两台mysql数据库服务器的mysql版本号一致,所以又重新装了一次..重新 ...

  6. ArrayList实现分组功能

    这边只用2个属性来进行分组 定义Object有key与value属性 按照key的不同对于arrayList进行分组 List<Object> tempList=new ArrayList ...

  7. php优化代码技巧

    1. 如果一个方法可静态化,就对它做静态声明.速率可提升至 4 倍. 2. echo 比 print 快. 3. 使用 echo 的多重参数(译注:指用逗号而不是句点)代替字符串连接. 4. 在执行 ...

  8. JS 使用 splice() 对数组去重

    一 问题 有如下 js 数组 connect_clients,需要在去掉所有元素中 user_id, goods_id 这两者的值都相同的元素. [ { id: 'eff040fb-92bc-4f24 ...

  9. canvas——路径搜索

    在前一篇博客中随机生成迷宫,现在就以随机生成的迷宫为地图,开始寻找路径. 迷宫寻路也可以使用DFS,BFS,但常见的是A*算法,它是启发式搜索算法的一种,效率相比前两者也更高.接下来以A*算法为例,迷 ...

  10. 平时常用的一些java方法,请留意

    平时常用的一些java方法,请留意. package com.util; import java.io.BufferedInputStream; import java.io.BufferedWrit ...