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

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的地方全部需要加上对这个属性的赋值,所以笔者更喜欢第一种。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringMVC 提供了多种解决乱码问题的方式,主要有以下几种: 1. 在 web.xml 中添加过滤器:通过在 web.xml 中添加 CharacterEncodingFilter 过滤器,可以将请求和响应的编码都设置为 UTF-8。具体配置代码如下: ``` <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 2. 在 SpringMVC 配置文件中设置编码过滤器:在 SpringMVC 配置文件中配置编码过滤器,也可以将请求和响应的编码设置为 UTF-8。具体配置代码如下: ``` <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8"/> </bean> </mvc:message-converters> </mvc:annotation-driven> ``` 3. 在 Controller 层中设置编码:在 Controller 层的方法中,可以通过 @RequestMapping 注解中的 produces 属性设置返回数据的编码格式。具体代码如下: ``` @RequestMapping(value = "/test", produces = "text/html;charset=UTF-8") @ResponseBody public String test() { return "测试中文乱码问题"; } ``` 总的来说,SpringMVC 提供了多种解决乱码问题的方式,开发者可以根据实际情况选择合适的方式进行配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值