前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springmvc字符 中文乱码问题

springmvc字符 中文乱码问题

作者头像
张小驰出没
发布2021-04-15 17:28:30
1.1K0
发布2021-04-15 17:28:30
举报
文章被收录于专栏:用户8506532的专栏

springmvc字符 中文乱码问题

1.字符过滤器

输入中文测试,发现乱码

以前乱码问题通过过滤器解决 , 而SpringMVC给我们提供了一个过滤器 , 可以在web.xml中配置,修改了xml文件需要重启服务器。

springmvc未设置字符过滤器,获取的信息,在前端页面显示的中文都是中文乱码。

解决方法:在web.xml中设置字符过滤器

代码语言:javascript
复制
<filter>
    <filter-name>encodingfilter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    <init-param>
          <param-name>encodingparam-name>
          <param-value>utf-8param-value>
    init-param>
    <init-param>
         <param-name>forceEncodingparam-name>
         <param-value>trueparam-value>
    init-param>
filter>
<filter-mapping>
    <filter-name>encodingfilter-name>
    <url-pattern>/*url-pattern>
filter-mapping>

但是发现 , 有些极端情况下.这个过滤器对get的支持不好 .

处理方法 :

修改tomcat配置文件 :

​ 文件位置:tomcat文件夹—conf—server.xml

​ 加入:URIEncoding="utf-8"

代码语言:javascript
复制

一般情况下,SpringMVC默认的乱码处理就已经能够很好的解决了!

乱码问题,需要平时多注意,在尽可能能设置编码的地方,都设置为统一编码 UTF-8

这种过滤器对大部分中文乱码都有用了,但是还有一种情况为json中文乱码

2.json乱码问题

中文变成????,这种情况常出现在:Controller类 使用了 @ResponseBody

​ @ResponseBody注解的作用是将controller的方法返回的对象 通过适当的转换器 转换为指定的格式之后,写入到response对象的body区(响应体中),通常用来返回JSON数据或者是XML。 ​ 数据,需要注意的呢,在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,它的效果等同于通过response对象输出指定格式的数据。 ​ 这里还要着重强调一下,要通过@ResponseBody 注解 将返回的json字符串放入响应体中,然后在前台js才能拿到json字符串进行解析,如果不加,响应体中就没有放入json字符串,前台自然是拿不到数据的,希望大家别理解错。


解决方法:

2.1 第一种解决方法

代码语言:javascript
复制
@RequestMapping(value = "/xxx",produces = "application/json;charset=utf-8")

加入了produces = "application/json;charset=utf-8"

这种方法一般就可以解决问题了,真不行就下面这种

2.2 第二种解决方法

上一种方法比较麻烦,如果项目中有许多请求则每一个都要添加,可以通过Spring配置统一指定,这样就不用每次都去处理了

1.导入依赖:

代码语言:javascript
复制
<dependency>
      <groupId>com.fasterxml.jackson.coregroupId>
      <artifactId>jackson-coreartifactId>
      <version>2.9.9version>
dependency>
<dependency>
      <groupId>com.fasterxml.jackson.coregroupId>
      <artifactId>jackson-databindartifactId>
      <version>2.9.9version>
dependency>

2.在springmvc.xml中配置

代码语言:javascript
复制
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=UTF-8value>
                        <value>text/html;charset=UTF-8value>
                    list>
                property>
            bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json;charset=UTF-8value>
                    list>
                property>
            bean>
        mvc:message-converters>
    mvc:annotation-driven>

基本上问题就解决了

个人博客为: MoYu’s Github Blog MoYu’s Gitee Blog

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • springmvc字符 中文乱码问题
    • 1.字符过滤器
      • 2.json乱码问题
        • 2.1 第一种解决方法
        • 2.2 第二种解决方法
    相关产品与服务
    云服务器
    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档