Solo  当前访客:3 登录 注册

喧哗博客-http://blog.xuahua.com

繁华过后的沉寂--技术经验分享
浏览次数: 101,152    文章总数: 91    评论总数: 3
标签:

spring4.x+json+中文乱码解决

基本配置:
1,在配置文件web.xml中设置统一设置过滤字符串
        <filter>
              <filter-name>encodingFilter</filter-name>
              <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
                  <init-param>
                   <param-name>encoding</param-name>
                   <param-value>utf-8</param-value>
                  </init-param>
         </filter>
 
         <filter-mapping>
              <filter-name>encodingFilter</filter-name>
              <url-pattern>/*</url-pattern>
         </filter-mapping>
2,在applicationContent.xml中配置返回json编码
        <bean id="multipartResolver"
  class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
 <bean
  class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
  <property name="messageConverters">
   <list>
    <bean
     class="org.springframework.http.converter.StringHttpMessageConverter">
     <property name="supportedMediaTypes">
      <list>
       <value>text/plain;charset=UTF-8</value>
       <value>text/html;charset=UTF-8</value>
      </list>
     </property>
    </bean>
    <bean
     class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
     <property name="supportedMediaTypes">
      <list>
       <value>text/plain;charset=UTF-8</value>
       <value>application/json;charset=UTF-8</value>
      </list>
     </property>
    </bean>
   </list>
  </property>
 </bean>
 
3,在response返回流中,设置响应头编码格式,统一为 UTF-8
       response.setHeader("Content-type", "text/html;charset=UTF-8");
       response.setCharacterEncoding("UTF-8");
4,在tomcat中配置文件中server.xml中<connector>节点,添加 URIEncoding="UTF-8"
 
 
第一种解决方案:
        在@RequestMapping(value="/index" ,produces = "text/html;charset=UTF-8")
 在使用public Map<String,Object) index(){} 这样的方法时,一定要写这样的注解才可以保持中文不乱码。

但是这种写法每个都需要硬编码 ,可以使用第二种方案。
 
第二种解决方案:
<!-- spring4.x json中文乱码处理,这一句一定要放在context:compent-scan前面 -->
 <mvc:annotation-driven>
  <mvc:message-converters>
   <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes">
     <list>
      <value>text/plain;charset=UTF-8</value>
      <value>text/html;charset=UTF-8</value>
     </list>
    </property>
   </bean>
  </mvc:message-converters>
 </mvc:annotation-driven>

公告

喧哗博客--繁华过后的沉寂--技术经验分享^-^
Copyright (c) 2009-2020, b3log.org & hacpai.com