下面将为你详细讲解“详解Spring MVC3返回JSON数据中文乱码问题解决”的完整攻略。
下面将为你详细讲解“详解Spring MVC3返回JSON数据中文乱码问题解决”的完整攻略。
问题描述
当Spring MVC3框架返回JSON格式数据的时候,中文字符往往会出现乱码问题,需要进行解决。
解决方案
方案一:修改配置文件
在Spring的配置文件中,增加以下配置即可解决中文乱码问题。
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="prettyPrint" value="true" />
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
其中,需要注意以下两点:
StringHttpMessageConverter
和MappingJackson2HttpMessageConverter
中都需要指定编码为UTF-8
。MappingJackson2HttpMessageConverter
中supportedMediaTypes
属性需要指定application/json;charset=UTF-8
,以确保响应头中的Content-type
正确地指明了返回的内容是JSON格式数据,并且使用的是UTF-8编码。
方案二:手动设置HttpServletResponse响应头
在处理请求返回JSON数据的方法中,手动设置HttpServletResponse
的响应头:
@RequestMapping(value = "/getData", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getData(HttpServletResponse response) throws IOException {
response.setContentType("application/json;charset=UTF-8");
Map<String, Object> data = new HashMap<>();
data.put("name", "张三");
data.put("age", 18);
return data;
}
这里需要特别注意的是,设置HttpServletResponse
响应头的时候,需要指定编码为UTF-8
,这样才能确保返回的JSON数据中包含的中文字符不会出现乱码。
示例说明
下面给出两个示例:
示例一
在Spring MVC中返回一个包含中文字符的对象:
@RequestMapping(value = "/getUserInfo", method = RequestMethod.GET)
@ResponseBody
public UserInfo getUserInfo() {
UserInfo userInfo = new UserInfo();
userInfo.setName("李四");
userInfo.setAge(20);
return userInfo;
}
其中UserInfo
类的定义如下:
public class UserInfo {
private String name;
private Integer age;
// getter和setter
}
使用上述的配置方案或者手动设置响应头方案都可以正确返回UTF-8编码的JSON数据。
示例二
如果数据源是从数据库中查询得到的,可能会出现查询结果中包含的中文字符在返回JSON数据时出现乱码的情况。比如:
@RequestMapping(value = "/getUsers", method = RequestMethod.GET)
@ResponseBody
public List<UserInfo> getUsers() {
List<UserInfo> userList = userDao.getUserList(); // 从数据库中查询得到用户列表
return userList;
}
同样可以通过上述的配置方案或者手动设置响应头方案来解决中文字符乱码问题。
本文标题为:详解Spring MVC3返回JSON数据中文乱码问题解决
基础教程推荐
- java – struts 2中的数据库访问 2023-11-06
- SpringMVC 使用JSR-303进行校验 @Valid示例 2024-01-11
- Spring自定义注解配置简单日志示例 2023-07-15
- Springboot在有锁的情况下正确使用事务的实现代码 2023-08-07
- openEuler 搭建java开发环境的详细过程 2022-12-27
- SpringBoot中定时任务@Scheduled注解的使用解读 2023-06-06
- 从零搭建脚手架之集成Spring Retry实现失败重试和熔断器模式(实战教程) 2023-03-11
- Java装饰者模式的示例详解 2022-11-05
- Java Web开发之图形验证码的生成与使用方法 2024-02-28
- Java超详细整理讲解各种排序 2023-03-22