web开发遇到json中文乱码,上网查并吸取众长,解决如下:
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.util.FileCopyUtils;
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("application", "json", 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;
}
}
}
springmvc.xml文件里
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="" />
<property name="suffix" value="" />
</bean>
<!-- 自动扫描且只扫描@Controller -->
<context:component-scan base-package="com.*" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="com.ssports.jiangsuapp.util.UTF8StringHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<mvc:default-servlet-handler />
分享到:
相关推荐
《易语言编写的坑爹记事本》是一款由易语言编程开发的简易记事本程序。易语言,作为中国本土的编程语言,以其简洁的语法和面向初学者的设计,为许多编程爱好者提供了学习编程的入口。然而,"坑爹记事本"这个称号可能...
本项目聚焦于C语言编写的小游戏——"坑爹大冒险",旨在提供一个有趣的实践平台,帮助学习者加深对C语言的理解并提升编程技能。 "坑爹大冒险"是一款基于命令行界面的文字冒险游戏,它通过简单的文字描述和用户输入,...
但是,又很坑爹了,这个json没问题,其他一些json又出现问题了,如下图: 解决:判断后台返回的数据格式是否字符串,是则转,不是则不转 代码如下: var $obj = (typeof data.content == 'string') ? JSON.parse...
c语言坑爹大冒险完整源码 c语言坑爹大冒险完整源码 c语言坑爹大冒险完整源码 c语言坑爹大冒险完整源码 c语言坑爹大冒险完整源码 c语言坑爹大冒险完整源码 c语言坑爹大冒险完整源码 c语言坑爹大冒险完整源码 c语言...
《史上最坑爹的游戏6》是由珠海顶峰互动科技研发的一款休闲益智类解谜游戏,简称“坑爹游戏”,于2013年发行。《史上最坑爹的游戏》是一个让人抓狂、让人迷恋、让人傻笑的游戏。 其中设计了大量奇思妙想,趣味连篇的...
《史上最坑爹的游戏8》是由珠海顶峰互动科技研发的一款休闲益智类解谜游戏,简称“坑爹游戏”,于2013年发行。《史上最坑爹的游戏》是一个让人抓狂、让人迷恋、让人傻笑的游戏。 其中设计了大量奇思妙想,趣味连篇的...
《史上最坑爹的游戏9》是由珠海顶峰互动科技研发的一款休闲益智类解谜游戏,简称“坑爹游戏”,于2013年发行。《史上最坑爹的游戏》是一个让人抓狂、让人迷恋、让人傻笑的游戏。 其中设计了大量奇思妙想,趣味连篇的...
超级有趣的坑爹跑酷!!! 能坑到让你怀疑人生的坑爹跑酷!!! 新增排行榜,让你与对手一决高下!!! 作者亲自测试 所有关卡均可通关 满分100分 你能夺得多少分呢? 赶快下载试试看吧!!! Tip: ▄█▀█● ...
"坑爹大冒险(C语言).zip" 这个压缩包文件看起来是一个与C语言编程相关的项目,可能是一个小型游戏或教学示例。通过它的标题,我们可以推测它包含了一些设计巧妙、富有挑战性的编程练习或者游戏关卡,旨在帮助学习...
在这个“C语言坑爹大冒险”的压缩包中,我们可以期待一系列与C语言编程相关的挑战和实例,可能涉及到陷阱、常见错误以及如何避免它们。这个资源可能适合初学者或有经验的程序员用来提升C语言技能。 C语言是一种结构...
《C语言坑爹大冒险》这个压缩包文件的标题似乎是一种幽默的说法,旨在指出学习C语言过程中可能会遇到的挑战和困惑。C语言是计算机科学的基础,它的语法严谨、功能强大,但同时也因为其低级特性而对初学者来说充满...
《史上最坑爹的游戏》是由珠海顶峰互动科技研发的一款休闲益智类解谜游戏,简称“坑爹游戏”,于2013年发行。《史上最坑爹的游戏》是一个让人抓狂、让人迷恋、让人傻笑的游戏。 其中设计了大量奇思妙想,趣味连篇的...
标题中的“坑爹的RockSaw和坑爹的windows7”可能是指在使用RockSaw工具(一个可能的开源或第三方软件)时遇到了问题,同时这些问题在Windows 7操作系统上尤为突出。RockSaw可能是一个用于处理数据、分析或开发的工具...
爬取这个搞笑网站。