zoukankan      html  css  js  c++  java
  • (04)Spring MVC之Get方式传参访问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,问题居然没有复现。。。

  • 相关阅读:
    gearman管理
    php运行方式
    gearman mysql持久化
    gearman安装及初次使用
    消息队列各种比较
    IOC
    post提交/文件上传服务器修改
    protobuf php
    thrift 安装介绍
    qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题
  • 原文地址:https://www.cnblogs.com/javasl/p/12766250.html
Copyright © 2011-2022 走看看