关于SpringMVC中text/plain的编码导致的乱码问题解决方法 postman默认 text/plain;charset=ISO-8859-1

https://blog.csdn.net/weixin_38437243/article/details/79049712

 

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

   
    先附上我的代码:

    

  后台打印的都是正确的,到了前台就乱码,如下:

然后以为是简单的response的编码问题,就在方法体中开始给response设置编码,结果charset和ContentType都设置遍了,于事无补!

这种问号明显就是编码问题啊,应该是ISO-8859-1编码,去后台查看日志,果然如下:

但是请注意最后的方框,它竟然是Spring框架的编码问题!

再看看前台的响应头,如下:

  那好了,确定无疑就是Spring MVC的编码问题了,查资料!

  于是开始搜索相关关键字,果然找到一篇帖子说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参数,用这个参数对所需要改变的请求类型做编码设置,成功了!!!示例代码如下:

结果如下图所示:

再来看看日志和消息头:

总结一下,最后这种方法是最实用最简单的方法,因为有时项目中用到text/plain的地方很少,其他的text/html类型的很少会出现乱码,所以这个疗效最快。
 ———————————————— 
版权声明:本文为CSDN博主「weixin_38437243」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38437243/article/details/79049712

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值