问题
保存数据到数据库,一看全是问号,看了看工程的log还有控制台,都是正常的,第一反应是jdbc url没有设置useUnicode=true&characterEncoding=UTF-8,check后发现jdbc url设置了,所以推断数据库字符集出问题了。
通过show variables like '%character%'
和 show variables like '%collation%'
之后,
character_set_server=latin
collation_database=latin1_swedish_ci
设置db server的字符集和校对规则
问题出在character_set_server,也就是数据库server字符集就是错误的。将mysql_home下的my-default.ini复制一份,改名为my.ini,在最后添加两行
character_set_server=utf8
collation_server=utf8_general_ci
collation_database=general_bin则通过在命令行中执行
设置db的校对规则
set collation_database=utf8_general_ci (重启后依然有效)
查看表的校对规则
为了保险,又看了一下表的校对规则
show table status from db_name like '%table_name%'
有一列是collation就是校对规则。
查看列的校对规则
然后,又看了一下表的列校对规则
show full columns from table_name;
全部都是utf8_general_ci,确定没问题了,然后再保存不乱码了。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/3737.html