• SpringMVC乱码问题


    POST请求乱码

      原因分析:一般浏览器使用编码默认和操作系统保持一致,而中文操作系统一般默认为gbk,我们的服务为utf-8

      解决办法:在web.xm中配置编码过滤器

     1 <filter>
     2     <filter-name>encodingFilter</filter-name>
     3     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
     4     <init-param>
     5         <param-name>encoding</param-name>
     6         <param-value>utf-8</param-value>
     7     </init-param>
     8     <init-param>
     9         <param-name>forceEncoding</param-name>
    10         <param-value>true</param-value>
    11     </init-param>
    12 </filter>
    13 <filter-mapping>
    14     <filter-name>encodingFilter</filter-name>
    15     <url-pattern>/*</url-pattern>
    16 </filter-mapping>

    GET请求乱码

      原因分析:一般tomcat默认认为的url栏和页面使用的不是同一编码,其他服务器基本上解决了post乱码get乱码也就解决了。

      解决办法:在tomcat中server.xml中的port=“8080”的配置项中,加上一个 URIEncoding=”utf-8属性

    返回乱码

      现象:浏览器请求某个使用@ResponseBody返回json的接口,返回json中有中文乱码。

      原因分析:SpringMVC中解析字符串的转换器默认编码是ISO-8859-1  

      解决办法:

      方法1,在Controller中的@RequestMapping注解中配置 produces = "application/json; charset=utf-8",缺点是每个方法都要配。

      方法2,在Spring-MVC.xml中配置字符串转换器取代默认转换器

     1 <!-- 处理请求返回json字符串的中文乱码问题 -->
     2 <mvc:annotation-driven>
     3     <mvc:message-converters register-defaults="true">
     4         <!-- StringHttpMessageConverter编码为UTF-8,防止乱码 -->
     5         <bean class="org.springframework.http.converter.StringHttpMessageConverter">
     6             <constructor-arg value="UTF-8" />
     7             <property name="supportedMediaTypes">
     8                 <list>
     9                     <bean class="org.springframework.http.MediaType">
    10                         <constructor-arg index="0" value="text" />
    11                         <constructor-arg index="1" value="plain" />
    12                         <constructor-arg index="2" value="UTF-8" />
    13                     </bean>
    14                     <bean class="org.springframework.http.MediaType">
    15                         <constructor-arg index="0" value="*" />
    16                         <constructor-arg index="1" value="*" />
    17                         <constructor-arg index="2" value="UTF-8" />
    18                     </bean>
    19                 </list>
    20             </property>
    21         </bean>
    22         <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
    23         <bean id="fastJsonHttpMessageConverter"
    24               class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
    25             <property name="supportedMediaTypes">
    26                 <list>
    27                     <value>application/json;charset=UTF-8</value>
    28                 </list>
    29             </property>
    30         </bean>
    31     </mvc:message-converters>
    32 </mvc:annotation-driven>
  • 相关阅读:
    Collection(集合)知识点总结
    【Mysql 学习】mysql 的使用复习
    解决Address localhost:1099 is already in use
    mysql8.0中dcl语句修改密码的语法
    mysql+sqlyog 多表查询练习
    MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法
    JDBC连接Mysql 8.0.12版本的几个注意事项
    JSTL学习
    64-多个参数个数
    63-参数的使用
  • 原文地址:https://www.cnblogs.com/guanghe/p/10429357.html
Copyright © 2020-2023  润新知