原因
由于 StringHttpMessageConverter 类中,默认采用的字符集是 ISO-8859-1
package org.springframework.http.converter;
public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {
private static final MediaType APPLICATION_PLUS_JSON = new MediaType("application", "*+json");
/**
* 这里默认采用的ISO_8859_1 编码格式
*/
public static final Charset DEFAULT_CHARSET = StandardCharsets.ISO_8859_1;
@Nullable
private volatile List<Charset> availableCharsets;
private boolean writeAcceptCharset = false;
解决方案
01 在@RequestMapping注解上添加 produces={“application/json;charset=UTF-8”}
@RequestMapping(value = “/*”,produces={“application/json;charset=UTF-8”})
但是每个类都要配置可能有些麻烦
02 在spring-mvc.xml配置文件中修改
<!-- 字符设置 -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean id="messageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
<value>text/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
或者
<mvc:annotation-driven>
<mvc:message-converters>
<bean id="messageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="defaultCharset" value="UTF-8"/>
<property name="writeAcceptCharset" value="true"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
配置完成即可