Spring MVC 返回类型为字符串时, 返回中文变成"?"处理

Spring controller 如下

@Controller
public class SimpleController { @ResponseBody
@RequestMapping(value = "/hotel")
public String hotel() {
return "{\"status\":0,\"errmsg\":null,\"data\":{\"query\":\"酒店查询\",\"num\":65544,\"url\":\"www.test.com\"}}";
} }

这里使用ResponseBody, 返回值直接是一个字符串, 没有用到jackson, 如果是返回一个Object, 使用jackson转json, 是没有编码问题的

这时酒店查询几个字全都变成了问号

由于Spring处理返回值为String类型的结果时使用了StringHttpMessageConverter, 所以我们需要配置他的编码

    <bean id="utf8Charset" class="java.nio.charset.Charset"
factory-method="forName">
<constructor-arg value="UTF-8"/>
</bean> <mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg ref="utf8Charset"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>

问题解决

参考自: http://blog.csdn.net/u010957324/article/details/9174001

上一篇:[读后感]spring Mvc 教程框架实例以及系统演示下载


下一篇:当标签上写了runat="server" 后,<%%>就会无效