springmvc使用@ResponseBody返回json乱码解决方法
2013-06-17 15:39
671 查看
1.springmvc 3.2以上的版本解决乱码的方法:
第一步:在配置中加入:
第二步:需要的加入的jackson jar如下:
2.springmvc 3.1解决中文乱码的方法:
第一步:在配置文件中加入以下代码:
第二步:自定义一个编码转换类:
第三步:加入需要的jackson包:
第一步:在配置中加入:
<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8" /> </bean> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> <property name="failOnEmptyBeans" value="false" /> </bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
第二步:需要的加入的jackson jar如下:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-jaxb-annotations</artifactId> <version>2.1.0</version> </dependency>
2.springmvc 3.1解决中文乱码的方法:
第一步:在配置文件中加入以下代码:
<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="com.util.spring.UTF8StringHttpMessageConverter"/> </mvc:message-converters> </mvc:annotation-driven>
第二步:自定义一个编码转换类:
public class UTF8StringHttpMessageConverter extends AbstractHttpMessageConverter<String> { public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); private final List<Charset> availableCharsets; public UTF8StringHttpMessageConverter() { this(DEFAULT_CHARSET); } public UTF8StringHttpMessageConverter(Charset defaultCharset) { super(new MediaType("text", "plain", defaultCharset), MediaType.ALL); this.availableCharsets = new ArrayList<Charset>(Charset .availableCharsets().values()); } @Override protected boolean supports(Class<?> clazz) { return String.class.equals(clazz); } @Override protected String readInternal(Class<? extends String> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { MediaType contentType = inputMessage.getHeaders().getContentType(); Charset charset = contentType.getCharSet() != null ? contentType.getCharSet() : DEFAULT_CHARSET; return FileCopyUtils.copyToString(new InputStreamReader(inputMessage .getBody(), charset)); } @Override protected void writeInternal(String t, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { MediaType contentType = outputMessage.getHeaders().getContentType(); Charset charset = contentType.getCharSet() != null ? contentType .getCharSet() : DEFAULT_CHARSET; FileCopyUtils.copy(t, new OutputStreamWriter(outputMessage.getBody(), charset)); } protected List<Charset> getAcceptedCharsets() { return this.availableCharsets; } @Override protected Long getContentLength(String s, MediaType contentType) { if (contentType != null && contentType.getCharSet() != null) { Charset charset = contentType.getCharSet(); try { return (long) s.getBytes(charset.name()).length; } catch (UnsupportedEncodingException ex) { throw new InternalError(ex.getMessage()); } } else { return null; } } }
第三步:加入需要的jackson包:
<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.8.8</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.8.8</version> </dependency>
相关文章推荐
- springmvc使用@ResponseBody返回json乱码解决方法
- 解决springmvc使用@ResponseBody返回String类型字符串中文乱码问题
- SpringMVC学习—使用ajax返回Json出现乱码解决方法
- SpringMVC 使用@ResponseBody返回json 中文乱码
- SpringMVC3的ResponseBody返回字符串(JSON)乱码问题解决
- 使用ajax请求SpringMVC返回Json出现乱码解决方法
- SpringMVC 使用@ResponseBody返回json 中文乱码
- SpringMVC 使用@ResponseBody返回json 中文乱码
- SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面
- SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面
- SpringMVC 使用@ResponseBody返回json 中文乱码
- SpringMVC 使用@ResponseBody返回json 中文乱码与返回实体类报错
- SpringMVC3的ResponseBody返回字符串(JSON)乱码问题解决
- SSM框架:解决后台传数据到前台中文乱码问题,使用@ResponseBody返回json 中文乱码
- SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面
- SSM框架——SpringMVC中使用@ResponseBody注解返回值,Ajax取得中文乱码解决方法
- SSM框架——SpringMVC中使用@ResponseBody注解返回值,Ajax取得中文乱码解决方法
- SpringMVC 利用@ResponseBody注解返回Json时,出现406 not acceptable 错误的解决方法。
- SpringMVC 使用@ResponseBody返回json 中文乱码