經常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>