解决低版本spring中StringHttpMessageConverter中文乱码问题

项目架构比较老旧,spirng用的3.0.2,在使用@ResponseBody String做返回值的接口时,若客户端不做处理,Content-Type默认为text/plain;charset=ISO-8859-1,导致的问题是中文会显示乱码,变成???问号。

 

查阅资料发现有以下几种解决方案:

  1. 在@RequestMapping里面加入produces = "text/html;charset=UTF-8"
@RequestMapping(value = "/getAllTask", method = RequestMethod. POST, produces = "text/plain;charset=UTF-8") 

public @ResponseBody String getAllTask(HttpServletRequest request,HttpServletResponse response)

2、XML配置


        
            
                
               
                
                
                
            
        
    
    
    

    
        
             
                 text/html;charset=UTF-8  
                 text/plain;charset=UTF-8  
               
          
    
     
        
             
            	 text/html;charset=UTF-8 
                 text/plain;charset=UTF-8   
               
        
       

3、因为在StringHttpMessageConverter里面默认设置了字符集是ISO-8859-1

所以找源代码,修改成UTF-8并打包到spring-web jar里

public class StringHttpMessageConverter extends AbstractHttpMessageConverter 

{ 

  public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); 

  .......... 

} 

4、直接将org.springframework.http.converter.StringHttpMessageConverter 里面的属性defaultCharset设置成utf-8

 





spring版本低的用不了配置的方式,于是选用了第三种方式,问题解决

你可能感兴趣的:(日常问题记录,spring,java)