解决Spring MVC @ResponseBody返回中文字符串乱码问题
2015-12-23 15:07
996 查看
引起乱码原因为spring mvc使用的默认处理字符串编码为ISO-8859-1。
具体参考org.springframework.http.converter.StringHttpMessageConverter类中public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
解决方法:
第一种方法:
对于需要返回字符串的方法添加注解,如下:
@RequestMapping(value="/getUsers", produces = "application/json; charset=utf-8")
public String getAllUser() throws JsonGenerationException, JsonMappingException, IOException
{
List<User> users = userService.getAll();
ObjectMapper om = new ObjectMapper();
System.out.println(om.writeValueAsString(users));
DataGrid dg = new DataGrid();
dg.setData(users);
return om.writeValueAsString(dg);
}
此方法只针对单个调用方法起作用。
第二种方法:
在配置文件中加入
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
参考:http://stackoverflow.com/questions/3616359/who-sets-response-content-type-in-spring-mvc-responsebody
具体参考org.springframework.http.converter.StringHttpMessageConverter类中public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
解决方法:
第一种方法:
对于需要返回字符串的方法添加注解,如下:
@RequestMapping(value="/getUsers", produces = "application/json; charset=utf-8")
public String getAllUser() throws JsonGenerationException, JsonMappingException, IOException
{
List<User> users = userService.getAll();
ObjectMapper om = new ObjectMapper();
System.out.println(om.writeValueAsString(users));
DataGrid dg = new DataGrid();
dg.setData(users);
return om.writeValueAsString(dg);
}
此方法只针对单个调用方法起作用。
第二种方法:
在配置文件中加入
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
参考:http://stackoverflow.com/questions/3616359/who-sets-response-content-type-in-spring-mvc-responsebody
相关文章推荐
- Kerberos+Java连接Hbase
- 加载了servlet包,报错java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
- 从头认识java-14.1 再次对比数组与容器
- Java [Leetcode 100]Same Tree
- Java Web 的servlet 之过滤器 filter
- 已经加载了类库,还是报错启动报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderList
- Java格式化日期
- 7.[Java开发之路](5)异常
- IBM WebSphere MQ发送消息和接收消息
- java 内部类
- 8.Java工程师成神之路
- Java中只有按值传递,没有按引用传递!
- 9.[Java开发之路](6)File类的使用
- 总结:java除法保留两位小数
- eclipse maven 插件使用
- Java中二维数组和一维数组的clone
- 在java代码中创建xml文件
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- Spring 3 MVC深入研究
- 源码分析netty服务器创建过程vs java nio服务器创建