(04)Spring MVC之Get方式传参访问Controller,从Controller返回json串出现菱形问号(?????)乱码,解决方法。

Posted 明月之诗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(04)Spring MVC之Get方式传参访问Controller,从Controller返回json串出现菱形问号(?????)乱码,解决方法。相关的知识,希望对你有一定的参考价值。

  背景:

  一个简单的Controller类,返回结果直接写死了,跟传的参数没关系

@Controller
@RequestMapping("/article")
public class ArticleController {

    @Autowired
    private ArticleService articleService;
    
    @RequestMapping("/add")
    @ResponseBody
    public Result add(Article article) {
        try {
            articleService.add(article);
            return new Result("添加成功!");
        } catch (Exception e) {
            return new Result("500","添加失败"+e);
        }
    }
}

  web.xml,该部分配置放在web.xml的最上面

<!-- 从页面post传值到controller时汉字出现问号,注意拦截的顺序,放在web.xml里面的最上面 -->
    <filter>
        <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>

  spring-mvc.xml

 <mvc:annotation-driven>
        <mvc:message-converters><!-- 解决字符串从Controller传递到页面汉字显示问号 -->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg ref="utf8Charset" />
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    
    <bean id="utf8Charset" class="java.nio.charset.Charset" factory-method="forName">
        <constructor-arg value="UTF-8" />
    </bean>

  使用maven的tomcat7插件,启动项目。

  浏览器中输入:http://localhost:8080/spring-web-mybatics/article/add?title=你好&classify=1&content=测试测试测试

  返回结果的汉字:“添加成功!变为:”?????

  解决方法:

  把项目的编码改成UTF-8,重新编译、启动即可。

  后来想截图,再把UTF-8改为GBK,问题居然没有复现。。。

 

以上是关于(04)Spring MVC之Get方式传参访问Controller,从Controller返回json串出现菱形问号(?????)乱码,解决方法。的主要内容,如果未能解决你的问题,请参考以下文章

Spring mvc框架 controller间跳转 ,重定向 ,传参

Spring MVC controller间跳转 重定向 传参

Spring MVC @PathVariable 被截断

2021-07-04 .NET高级班 91-ASP.NET MVC WebApi前后端传参详解

spring mvc 重定向加传参

Spring RestTemplate 之get请求