您的位置:首页 > 编程语言 > Java开发

在mybatis+spring mvc+spring开发中遇到的困扰两天的中文乱码问题(艰辛)

2018-03-02 14:39 555 查看

问题描述:

1.在保存输入的中文数据时,数据库保存为乱码;
2.在mybitis的【debug】日志里可以看到正确的sql语句



可以看到输入的中文字无乱码
3.在mysql的控制台和sqlyog输入日志里的sql语句,能够正确执行

艰辛的解决流程:

1.一开始我以为是编码问题,于是我检查并修改了
   ---jsp页面编码:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

   --- 数据库连接加上默认字符集:jdbc:mysql://127.0.0.1:3306/xx?useUnicode=true&charaterEncoding=utf-8

   --- 在web.xml里配置了过滤器设置的字符集为utf-8:
        <filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>
4000
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>*.do</url-pattern>
</filter-mapping>

        为了防止通过get方式导致的参数编码问题,通过str.equals(new String(str.getBytes("UTF-8"),"UTF-8"))为true来知道从页面获得的值得编码为utf-8,获得的参数的值编码并没有问题

  ---tomcat的默认URI编码:
[b]


[/b]



  ---数据库,表,字段的编码查看








[b]


[/b]
  检查发现都没有问题,编码均为utf8
2.当所有的一切都做完时,我期盼的正确结果并没有来,啊啊啊啊啊啊,然后各种找,终于发现了我的数据库配置(my.ini)是罪魁祸首。为啥一开始没想到呢,因为以前用ssh框架时,并没有出现此类问题,导致我直接忽略了。。。
通过网上的寻找发现
---show variables like '%character%';//查看数据库编码设置



---修改方法:
    在mysql的安装目录下的bin目录里找到my.ini,打开
    在[client] 下添加:default_character_set = utf8
    在[mysqld]下添加:character_set_server = utf8



    一开始,修改了配置,重启mysql服务后发现并没有生效。。。

    最后,把my.ini文件复制到mysql安装的目录,也就是和bin同级

  大功告成!!!!!!!!!!!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: