1. 首页
  2. bug人生

中文写入mysql数据库显示为问号?

中文写入mysql数据库显示为问号?
中文写入mysql数据库显示为问号?

用存储过程把中文写入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隐藏文件夹。如图:

中文写入mysql数据库显示为问号?



找到my-default.cnf默认配置文件,路径如图:

中文写入mysql数据库显示为问号?



拷贝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文件夹,如图:

中文写入mysql数据库显示为问号?



往etc文件夹写入文件需要权限,输入你的密码:

中文写入mysql数据库显示为问号?
中文写入mysql数据库显示为问号?

3.重新启动mysql服务器;
先停止,再启动。如图:

中文写入mysql数据库显示为问号?
中文写入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)

再次往数据库写入中文,验证结果:

中文写入mysql数据库显示为问号?

至此,把collation_server 的值由 latin1_swedish_ci 改为了utf8_general_ci。

原创文章,作者:维尼兔,如若转载,请注明出处:https://www.v2v0.com/?p=112

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

 

工作时间:周一至周五,09:30-17:00,节假日休息