最近做Java GUI项目时,利用 insert SQL 语句向 MySQL数据库(版本:mysql 5.5)中插入了中文,无奈中文都被 ?? 替换了,也就是中文乱码了。
1、网上普遍的改法
百度了一圈,修改方法也就是在 mysql 配置文件增加代码,先看看配置文件在哪吧
也就是添加了这两行代码吧,有的可能说要添加三行代码。。。
然后,直接重启 mysql 服务就 ok 啦,然并卵……
如果,这种方法对你的 mysql 有用的话,下面的就不让您劳神了
2、问题排除
首先,我做的是 Java GUI项目,并没有像 Java web 项目那样需要从网页中获得数据插入到数据库,排除代码编码格式问题(别问我怎么知道的,我试过了)
其次,我安装 mysql 之后进行配置的时候明确选择了 utf8 编码格式,也就是之前我遇到过的中文乱码问题(不清楚的,过去看看MySQL数据库使用Navicat for MySQL建立表格时,出现输入中文字符串保存后报错问题),和明显的区别,这里我直接在 navicat 中向表格中添加中文数据,是没有任何毛病的。
最后呢,我这个菜鸡还是回到了百度,准备再认真淘淘。。。
然后呢,就发现了一个问题,我好像还没有在 命令窗口 查看自己的 mysql 编码格式是不是都是 utf8,本来就比较排斥(我对命令这块不熟悉哈)
在命令窗口中进入数据库,输入命令:show variables like 'char%';
果然有一条漏网之鱼, 这个 character_set_server 的格式竟然还是 latinl
我记着教程里添加过了这行代码,为什么编码格式还是这个吊样,再次进入配置文件,向下划拉了几下,就发现了真正的根源:
将这个东西修改为 utf8,重启一下服务,正常了。
但是如果在 命令窗口 插入数据仍旧会报错:
ERROR 1366 (HY000): Incorrect string value: ‘\xB4\xF4\xB4\xF4’ for column ‘name’ at row 1
这些都不重要了,现在能在代码中添加进去中文,我的目的已经达到了。