解决SpringMVC使用@ResponseBody中文乱码(???)问题

    xiaoxiao2021-03-25  189

    SpringMVC的@ResponseBody返回中文乱码(???)的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.converter.StringHttpMessageConverter类中可以看到如下代码:

    public static final Charset DEFAULT_CHARSET = Charset.forName(“ISO-8859-1”);

    两种处理办法: 一:全局处理方式(笔者推荐) 在springmvc的配置文件中

    <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg ref="utf8Charset" /> </bean> </mvc:message-converters> </mvc:annotation-driven> <!--全局解决springmvc的@ResponseBody中文问号问题--> <bean id="utf8Charset" class="java.nio.charset.Charset" factory-method="forName"> <constructor-arg value="UTF-8" /> </bean>

    用这种方法轻松解决 二:在每个@RequestMapping请求中对produces属性进行赋值。

    @RequestMapping(value="/user/findName",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"}) @ResponseBody

    produces = {“application/json;charset=UTF-8”},加上这个也能解决,但是比较麻烦,需要使用@ResponseBody的地方全部需要加上对这个属性的赋值,所以笔者更喜欢第一种。

    转载请注明原文地址: https://ju.6miu.com/read-8150.html

    最新回复(0)