Spring返回text/plain出现中文乱码

Spring返回text/plain出现中文乱码今天在RestTemplate调试的时候发现返回的中文出现了乱码,使用POST

大家好,又见面了,我是你们的朋友全栈君。

今天在RestTemplate调试的时候发现返回的中文出现了乱码,使用postman插件测试却发现没有乱码。

仔细观察返回协议后,发现postman在未设置的时候Accept属性是 */*,所以不是乱码

RestTemplate默认是使用org.springframework.http.converter.StringHttpMessageConverter来解析

/** Create a new instance of the {@link RestTemplate} using default settings. */
	public RestTemplate() {
		this.messageConverters.add(new ByteArrayHttpMessageConverter());
		this.messageConverters.add(new StringHttpMessageConverter());
		this.messageConverters.add(new ResourceHttpMessageConverter());
		this.messageConverters.add(new SourceHttpMessageConverter());
		this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());
		if (romePresent) {
			this.messageConverters.add(new AtomFeedHttpMessageConverter());
			this.messageConverters.add(new RssChannelHttpMessageConverter());
		}
		if (jaxb2Present) {
			this.messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
		}
		if (jackson2Present) {
			this.messageConverters.add(new MappingJackson2HttpMessageConverter());
		}
		else if (jacksonPresent) {
			this.messageConverters.add(new MappingJacksonHttpMessageConverter());
		}
	}

看源码发现

public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {

	public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");

居然是用的ISO-8859-1来编码的

为了判断是客户端出错还是服务端出错,于是用postman将Accept设置为text/plain测试,发现还是乱码

<bean class="org.springframework.http.converter.StringHttpMessageConverter">
			<property name="supportedMediaTypes">
				<list>
					<value>text/plain;charset=UTF-8</value>
				</list>
			</property>
		</bean>

在spring mvc中配置的类也是这个,必然是这个有问题了

浏览了很多帖子都说改源码

由于我是Maven构建的项目,所以没有修改源码后替换jar包里的class文件,于是新建一个一样的包名,一样的类名

public class StringHttpMessageConverter extends
		AbstractHttpMessageConverter<String> {

	public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");

将源码复制一下,再将IOS-8859-1改为UTF-8,问题迎刃而解!

但是也有不改源码的方法,将spring mvc 配置文件修改如下

<bean class="org.springframework.http.converter.StringHttpMessageConverter">
	<constructor-arg value="UTF-8" index="0">
	</constructor-arg>
	<property name="supportedMediaTypes">
		<list>
			<value>text/plain;charset=UTF-8</value>
		</list>
	</property>
</bean>


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159860.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 办公技巧 SecureCRTPortable如何设置自动保存日志[通俗易懂]

    办公技巧 SecureCRTPortable如何设置自动保存日志[通俗易懂]1.选项-全局选项-常规-默认回话-编辑默认设置-日志文件2.将日志文件名改为:路径+%H_%M%D_%h%m%s3.在连接时自动加入:[%Y%M%D_%h:%m:%s]4.在每行自动加入:[%h:%m:%s]5.保存,选择所有回话,即可在下一次连接时自动保存日志文件显示项可选:%H:主机名%S:串口名%Y:年%M:月%D:日%h:时%m:分%s:秒…

    2022年6月4日
    108
  • 1092. To Buy or Not to Buy (20)

    1092. To Buy or Not to Buy (20)

    2022年2月22日
    48
  • python获取uuid_python split函数

    python获取uuid_python split函数importuuidprintuuid.uuid1()

    2022年8月10日
    5
  • 资源网站(电驴替代方案)

    资源网站(电驴替代方案) 0、http://www.emule-project.net/这个不用说了,emule官方,没有它就没有下面的所有一切,德国人开的。只提供官方版emule软件,没有资源下载。秉承理念“eMule是完全免费的,它也决不包含广告软件、间谍和流氓软件。我们之所以创造eMule是为了快乐和知识,而不是为了金钱。”eMule的作者是一个德国人Merkur,本名Hendrik.Breitk…

    2022年7月15日
    19
  • 如何解决Ubuntu 14.04编译make menuconfig时缺少’ncurses-devel’库[通俗易懂]

    如何解决Ubuntu 14.04编译make menuconfig时缺少’ncurses-devel’库[通俗易懂]今天在使用64位的Ubuntu14.04系统编译linux源码的makemenuconfig命令时,得到了一个错误的提示,说我没有安装相应的库:Unabletofindthencurseslibrariesortherequiredheaderfiles.’makemenuconfig’requiresthencurseslibraries.Instal…

    2022年6月2日
    39
  • 宝塔面板配置及部署javaweb教程(全网最全)

    宝塔面板配置及部署javaweb教程(全网最全)配置宝塔面板javaweb运行环境详解1.准备:(解析成功的域名,本地运行完好的项目,宝塔面板)解析按照阿里的教程一步一步来,不会出错,非常简单,有问题的自行百度2.登陆宝塔面板配置环境安装必备软件这里推荐安装Nginxweb服务器,感觉Apache要没落了,安装都是一键式安装,除了图示的软件之外,还需下载phpMyadmin(用来管理数据库,配套下载php5.3)另外,在选择to…

    2022年6月22日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号