用存储过程把中文写入mysql数据库时,汉字中文全部显示为问号”????”,
写入英文和数字都是正常的。
用Navicat 命令行查询数据库字符集情况:
mysql> SHOW VARIABLES LIKE '%colla%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.02 sec)
collation_server | latin1_swedish_ci 这个拉丁字符集是导致中文显示为问号的原因。
那么怎么修改collation_server为utf8_general_ci呢?
mysql for Mac修改collation_server等字符集:通过增加和修改my.cnf配置文件。
1.拷贝/usr/local/mysql/support-files下的my-default.cnf文件到桌面,
打开Finder,通过菜单 前往》前往文件夹(或者用快捷键command+shift+G),输入“/usr”,打开usr隐藏文件夹。如图:
找到my-default.cnf默认配置文件,路径如图:
拷贝my-default.cnf到桌面,然后重命名为my.cnf,并且添加下面3句
[client]
default-character-set=utf8
character-set-server=utf8 collation-server=utf8_general_ci
然后保存文件。
2.把修改好的配置文件my.cnf拷贝到/etc目录下。
用同样的方法前往文件夹打开/etc文件夹,如图:
往etc文件夹写入文件需要权限,输入你的密码:
3.重新启动mysql服务器;
先停止,再启动。如图:
然后再就进入mysql数据库,用Navicat查看编码发现改成了utf8了。
下面是我重启mysql服务器进入mysql数据库查出来的结果:
mysql> SHOW VARIABLES LIKE '%colla%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.02 sec)
再次往数据库写入中文,验证结果:
至此,把collation_server 的值由 latin1_swedish_ci 改为了utf8_general_ci。
原创文章,作者:维尼兔,如若转载,请注明出处:https://www.v2v0.com/?p=112