【视频 & 交流平台】
http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share
http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share
https://gitee.com/happyangellxq520/spring-boot
http://412887952-qq-com.iteye.com/blog/2321532
需求缘起:
在录制视频《Spring Boot集成jersey》的时候,在返回中文的时候,出现了乱码,这个当时在集成的时候,返回的是英文,所以并没有发现这个问题,这里对这个问题给出解决方案。
请求源代码:
我们这里先提供请求方法的源代码:
@GET//get请求. @Path("/getUser") @Produces(MediaType.APPLICATION_JSON) public Map<String,Object> getUser(){ Map<String,Object> map = new HashMap<String,Object>(); map.put("id","1000"); map.put("name","张三"); map.put("age","25"); System.out.println(map.get("name")); return map; }
方案一
通过以上代码,我们能清楚在map对象中的name的话,是不会出现乱码的,那么就在返回的时候,response,并没有设置编码,那么怎么在返回的时候,指定编码呢,只需要稍微修改上面的代码即可:
@GET//get请求. @Path("/getUser") @Produces(MediaType.APPLICATION_JSON+";charset=UTF-8")
在这里我们手动配置了utf-8编码。
方案二
我们先说说方案一存在的问题:
(1)编码不方便,每个开发人员都需要进行编码;
(2)编码调整或者是后期发现中文,要调整的地方比较多;
(3)代码侵入性太强;
那么我们有更好的方案嘛,当然有,只需要在application.properties配置两个信息:
spring.http.encoding.force=true spring.http.encoding.charset=UTF-8
到这里就可以完美解决中文乱码问题。