Spring Mvc中@ResponseBody中文乱码解决汇总
2015-10-14 15:53
495 查看
spring 3 mvc 的 @ResponseBody返回数据用起来很方便,但是中文乱码,而且返回的Content-Type不带编码信息,网上有很多解决方法,但是大部分都存在一些问题,这里只介绍一种,如下:
自己写一个继承StringHttpMessageConverter的类UTF8StringHttpMessageConverter,内容参考 StringHttpMessageConverter.java中的代码,该类参考代码如下:
spring-servlet的配置文件如下:
注:一定要放在扫描器之前
参考:
/article/1932795.html
http://wenku.baidu.com/link?url=I1OjprSVraCMRmg9JZi5RyX2DTn2kPTdkufuNliBkYB7juWOtVCKvKvm1EV4mb0imSQ_YXWxVVLNZW7UiNHStoNlHCILDqebRmRbJ4dd-T7
自己写一个继承StringHttpMessageConverter的类UTF8StringHttpMessageConverter,内容参考 StringHttpMessageConverter.java中的代码,该类参考代码如下:
package com.aikang.common; import java.io.IOException; import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.util.Arrays; import java.util.List; import org.springframework.http.HttpOutputMessage; import org.springframework.http.MediaType; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.util.FileCopyUtils; public class UTF8StringHttpMessageConverter extends StringHttpMessageConverter { private static final MediaType utf8 = new MediaType("text", "plain", Charset.forName("UTF-8")); private boolean writeAcceptCharset = true; @Override protected MediaType getDefaultContentType(String t) { return utf8; } @Override protected List<Charset> getAcceptedCharsets() { return Arrays.asList(utf8.getCharSet()); } @Override protected void writeInternal(String s, HttpOutputMessage outputMessage) throws IOException { if (this.writeAcceptCharset) { outputMessage.getHeaders().setAcceptCharset(getAcceptedCharsets()); } Charset charset = utf8.getCharSet(); FileCopyUtils.copy(s, new OutputStreamWriter(outputMessage.getBody(), charset)); } public boolean isWriteAcceptCharset() { return writeAcceptCharset; } public void setWriteAcceptCharset(boolean writeAcceptCharset) { this.writeAcceptCharset = writeAcceptCharset; } }
spring-servlet的配置文件如下:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="com.aikang.common.UTF8StringHttpMessageConverter" /> </list> </property> </bean>
注:一定要放在扫描器之前
参考:
/article/1932795.html
http://wenku.baidu.com/link?url=I1OjprSVraCMRmg9JZi5RyX2DTn2kPTdkufuNliBkYB7juWOtVCKvKvm1EV4mb0imSQ_YXWxVVLNZW7UiNHStoNlHCILDqebRmRbJ4dd-T7
相关文章推荐
- Spring--PropertyPlaceholderConfigurer
- 浅谈java volatile
- spring中注解的实现原理,帮助理解@autowired @resource区别
- Myeclipse 全局搜索的时候报错problems encountered during text search
- Java集合总结(未完待续)
- Spring AOP execution
- eclipse工程复制
- Spring依赖注入
- Java设计模式之工厂设计模式
- Java基础知识强化之IO流笔记71:NIO之 NIO的(New IO流)介绍
- java modbus 32位浮点数解析
- 杭电ACM1106排序Java代码
- 字符串表达式的计算java版本
- Spring从配置中获取bean取不到
- Java基础知识强化之IO流笔记70:Properties练习之 如何让猜数字小游戏只能玩5次的案例
- encodeURIComponent编码后java后台的解码
- Struts2拦截器token防止重复提交
- (转)java zxing 二维码工具类,中间带Logo 的
- java 基础 系列(二)
- Java 解析java程序的过程图