文章目录
  1. 1. 使用resteasy的乱码问题

使用resteasy的乱码问题

JAVA代码技巧 中文乱码 RestEasy

使用resteasy的乱码问题

 

 

系统统一采用utf-8编码。一般遇到乱码问题,都需要做如下1、2、3步操作:

1、jsp页面设置编码

    <%@ page language=”java” contentType=”text/html; charset=UTF-8”%>

   

2、tomcat的url编码:

    

3、mysql的编码:

    

针对resteasy:

一,提交过程的乱码

    建立设置一个filter, 设置提交的编码:request.setCharacterEncoding(“utf-8”); (主要针对POST提交请求,GET提交走的是url)

二,返回过程中的乱码

  方法1:在方法上加:  @Produces(“text/plain; charset=utf-8”)

  方法2:采用resteasy的intercepter,建立一个 PostProcessInterceptor,在里面对编码进行统一处理:

 

MultivaluedMap<String, Object> map = response.getMetadata(); 

List contentType = map.get(“Content-Type”);  

if (contentType.size() > 0) {  

    String c = ((MediaType) contentType.get(0)).toString();  

    if (c.contains(“charset”)) {  

        c = c.split(“;”)[0] + “;” + “charset="UTF-8"“;  

    } else {  

        c = c + “;” + “charset="UTF-8"“;  

    }  

    map.remove(“Content-Type”);  

    map.add(“Content-Type”, c);  

}  

 

 

针对返回过程中的乱码,在filter中设置编码不起作用,应该是resteasy根据客户端的请求编码(

Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3)已经完成了GBK的编码,所以再次设置为utf-8不起作用。

 

说明:如果返回的格式是application/json,默认的编码是utf-8的,所以不会是乱码。jquery发起的请求也是utf-8的

文章目录
  1. 1. 使用resteasy的乱码问题