问题场景
现在项目和浏览器一般都是utf8编码,如果通过浏览器访问后端接口通常没有问题
如果在后端调用另一个服务的接口,返回值的编码默认是iso-8859-1
,如果字符串包含中文,调用方就会出现乱码
解决方案
修改springmvc配置文件,增加converters
,代码如下
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
或
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
服务端会在response header
中设置编码,在没有设置默认编码的场景就不会出现乱码了。