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)
上一篇 2022年7月15日 下午9:00
下一篇 2022年7月15日 下午9:00


相关推荐

  • Nmap 命令[通俗易懂]

    Nmap 命令[通俗易懂]Nmap命令探测主机信息一、扫描指定IP所开放的端口输入命令:nmap-sS-p-1-65535-v192.168.1.106表示用半开扫描,扫描指定端口为1到65535,并且显示扫描过程Nmap常用扫描参数及说明参数 说明-sT TCPconnect()扫描,这种方式会在目标主机的日志中记录大批连接请求和错误信息-sS 半开扫描,很少有系统能够把它记入系统日志。不过,需要root权限-sF-sN 秘密FIN数据包扫描,XmasTree、Null扫描模式-sP pin

    2022年5月28日
    49
  • mysql基本命令

    mysql基本命令这里把自己学的mysql数据库的知识总结一下,当是给自己复习一遍,也是方便以后查询安装和配置mysql就不说了,可以借鉴这位博友的安装过程https://www.cnblogs.com/by330

    2022年7月3日
    22
  • beancopier 深拷贝_对象的拷贝有几种方法

    beancopier 深拷贝_对象的拷贝有几种方法BeanCopier对象拷贝packagecom.xmsme.nicsp.monitor.util;importjava.util.List;importjava.util.Map;importjava.util.concurrent.ConcurrentHashMap;importorg.springframework.cglib.beans.BeanCopier;/***BeanCopier工具类**@authorzwy*/public…

    2025年9月12日
    7
  • STL库 总览_stl库函数

    STL库 总览_stl库函数  STL库1泛型程序设计2STL标准模板库2.1STL库的基本组件2.1.1STL基本组件—-容器2.1.2STL基本组件—-迭代器2.1.3STL基本组件—-函数对象2.1.4STL基本组件—-算法3迭代器4容器的基本功能与分类4.1顺序容器  1泛型程序设计  泛型程序设计就是时候,将程序设计的尽量的通用。STL标准库就是泛型程序设计的一个很好的范例。  ◇编写不依赖具体数据类型的程序;  ◇将算法从特定的数据结构中抽象出来,成为通用的;  ◇

    2022年10月10日
    5
  • OpenAI 正式发布AI智能体 ChatGPT Agent

    OpenAI 正式发布AI智能体 ChatGPT Agent

    2026年3月16日
    1
  • [CentOS]离线安装gcc/gcc-c++-「建议收藏」

    [CentOS]离线安装gcc/gcc-c++-「建议收藏」环境CentOS7.5官方地址:https://gcc.gnu.org/releases.html镜像站点1:http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/镜像站点2:https://vault.centos.org/7.5.1804/os/x86_64/Packages/gcc:4.8.5安装GCCgcc依赖包清单如下(镜像站下载)cpp-4.8.5-44.el7.x86_64.rpmgcc-4.8.5-44.el7.

    2022年5月9日
    619

发表回复

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

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