mysql插入中文乱码问题

新人第一篇博客,今天碰到的问题网上找了些个人一点点总结,不对的地方还望各位大佬斧正。

言归正传,今天把写好的项目打成war包,放到服务器上;通过前端界面修改字段,发现修改之后中文查出来乱码了;

我的项目是springboot springMVC mybatis结构,工具idea,mysql5.7;因为之前设置过idea的全局编码、项目编码、文件编码,日志打印出来前台发送过来也是没有乱码的,于是就一直在mysql平台上找问题,哎最后真的是,唉!不说那么多了;最后我捋了捋:

我的想法,从前台到后台,最后数据库;从前往后的找法(注:我的项目个人都是utf-8)

1、排除前台js代码的问题,因为提交大部分是通过js提交的(get,post。。。);我用的是jquery 的ajax直接设置属性

scriptCharset='utf-8';这个一眼就看出来,也可以f12来看即将传入后台的值有没有乱码;

2、idea -setting-Editor-File Encodings查看代码的编码格式是不是utf-8

3、查看项目中msyql连接池配置信息是不是设置了编码格式,有时候有的不设置,有的设置了在本地感觉没区别;这个编码格式不设置,如果你的mysql的字符集里设置了服务器的字符集为utf-8,也就是和代码里一致,那也行(就是mysql的客户端,连接,服务器,结果集保持一致就可以);我的问题就是mysql数据字符集不一致但是又不能改,代码里也没有配置连接字符集编码格式;加个characterEncoding=UTF-8就行(有个小细节,后台打印日志数据是中文,听说这个日志打印出来有时候乱码,有时候好的,不能做参考原因不清楚)

4、mysql数据库,mysql数据库的字符集可以跟代码、数据库表字符集一致,但是代码和数据库表的字符集一定要一致(也就是字段里的内容编码格式要一样),数据库的字符集是默认的,彼此不一致如下:

查看服务器中数据库实际编码格式。使用root用户登陆数据库,输入:show variables like 'character%';

character_set_database 这个是数据库的编码格式这个好像改不改都影响不大,这几 者之间的关系可以网上去搜网页被我干掉了,找不到,就不放上来了;

重点是character_set_server这个东西,叫服务器端字符集,如果第三点,没在代码的配置文件设置jdbc时没加入编码格式;可以在vi /etc/my.cnf 在[mysqld]下只加入character_set_server=utf8,数据库,服务器端都会变成utf8,不用其他操作;且是永久的;这样就算不在jdbc上设置编码格式也可以,3或者4这两点取其中一点就行,否则就算其他的都没问题一样会乱码;

 

5、最后查看数据库表的编码格式;命令:show table status from sqlstudy_db like '%countries%';  也可以用Navicat 工具来改好用的一匹;像数据库的字符集,表的字符集,选择数据库、表右键 database properties、Design table就行,直接修改;

我直观的感觉就是数据库里character_set_server与jdbc连接池设置编码都是用于服务端的连接编码取其一;

自己写的有一些混乱,希望能有所帮助!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值