web项目中页面输出中文存到mysql数据库里变成了乱码的问题

最好是能断点跟踪一下这个中文是在哪一步变成乱码的,以便更好定位;
如果不方便断点,就都检查一下吧:

1.IDE工作空间的字符集改为UTF-8
以Eclipse为例:window-Preferences-General-Workspace-Text file encoding

2.在web.xml里加上字符集编码过滤,解决前端中文乱码问题
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param:>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3.在配置jdbc数据源的时候加上字符集:(其实如果你创建数据库的时候指定了字符集,这一步就不用加了)
jdbc:mysql://127.0.0.1:3306/logistics?useUnicode=true&amp;characterEncoding=UTF-8

4.数据库字符集
登录数据库,执行如下sql:
show variables like 'character%';
结果:
| character_set_client     | utf8                                                   |
| character_set_connection | utf8                                                   |
| character_set_database   | latin1                                                 |
| character_set_filesystem | binary                                                 |
| character_set_results    | utf8                                                   |
| character_set_server     | latin1                                                 |
| character_set_system     | utf8                                                   |
可以看到character_set_database和character_set_server的字符集不是utf8,这个往往出现在用rpm包安装的情况下,默认就是latin1的,所以需要修改
修改方法网上教程很多,但是不同版本其实有所区别,比如很多教程里说到修改my.cnf配置,但是并不是所有的my.cnf配置文件里都有[client]和[mysql],而是只有[mysqld],如果是第一次修改的朋友,可能会在这里有一些困惑;
如果只有[mysqld],只需要在[mysqld]下面添加一行character-set-server=utf8,(如果mysql是5.6以前的版本,字符集设置是 default-character-set=utf8),然后重启即可;
再去数据库里面查看如下:
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client    | utf8                       |
| character_set_connection | utf8                      |
| character_set_database   | utf8                      |
| character_set_filesystem | binary                    |
| character_set_results    | utf8                       |
| character_set_server    | utf8                       |
| character_set_system    | utf8                     |
| character_sets_dir      | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
已经变为utf8了;

基本以上步骤都做了,应该不会再有中文乱码问题了。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值