经常json以@ResponseBody注解String类型返回,因为 StringHttpMessageConverter里面默认设置了字符集是ISO-8859-1,所以这儿传回去的字符串中的中文经常是乱码,多个?号表示的样子,解决的方法是将StringHttpMessageConverte r默认值改成UTF-8才行。java
spring配置文件中添加这两个bean,代码以下:spring
<bean name="utf8Charset" class="java.nio.charset.Charset" factory-method="forName" > <constructor-arg value="UTF-8" ></constructor-arg> </bean> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg ref="utf8Charset"> </constructor-arg> <property name="supportedMediaTypes"> <list> <bean class="org.springframework.http.MediaType"> <constructor-arg value="text" /> <constructor-arg value="plain" /> <constructor-arg value="UTF-8" /> </bean> <bean class="org.springframework.http.MediaType"> <constructor-arg value="application" /> <constructor-arg value="json" /> <constructor-arg value="UTF-8" /> </bean> </list> </property> </bean>
还须要添加以下几个jar包:
json
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency>