问题:从网页传递数据到数据库,控制台显示正常,数据库汉字全是???
1. 检查数据库表,字段属性编码是否是utf-8,数据库默认是latin1
改完还是问号
2. cmd查询MySQL,查询编码格式
C:\Windows\system32>mysql -hlocalhost -uroot -p
mysql> show variables like "char%";
+--------------------------+-------------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:\soft-ware\MySQL\mysql-5.7.29\share\charsets\ |
+--------------------------+-------------------------------------------------+
3. 修改my.ini配置文件(没有则在压缩包解压后的文件里找到my-medium.ini)
在[client]和[mysqld]字段下面均添加
default-character-set=utf8
mysql(mysql5.5以上),在高版本对字符编码方式修改的办法中,在[mysqld]下的修改发生了变化,正确方式如下:
[mysqld]下添加的应该为:
character-set-server=utf8
collation-server=utf8_general_ci
4. 重新启动MySQL,查询格式
+--------------------------+-------------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\soft-ware\MySQL\mysql-5.7.29\share\charsets\ |
+--------------------------+-------------------------------------------------+