命令行客戶端的字符集問題
插入帶中文的數據時報錯
mysql> insert into t_stu values(1,'法外狂徒張三','男');
ERROR 1366 (HY000): Incorrect string value: '\xA4\x96\xE7\x8B\x82\xE5...' for column 'sname' at row 1
原因應該時服務器端和客戶端字符不一致
查看所有字符集:SHOW VARIABLES LIKE ‘character_set_%’;
show variables like ‘character_set_%’
mysql> show variables like 'character_set_%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\databases\mysql-5.7.28\share\charsets\ |
+--------------------------+-------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
mysql> select * from t_stu;
+------+--------------+--------+
| sid | sname | gender |
+------+--------------+--------+
| 1 | ·¨Íâ¿ñͽÕÅÈý | ÄÐ |
+------+--------------+--------+
1 row in set (0.00 sec)
解決方案,設置當前連接的客戶端字符集“SET NAMES utf8;”
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'character_set_%';
+--------------------------+-------------------------------------------+
| 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:\databases\mysql-5.7.28\share\charsets\ |
+--------------------------+-------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
mysql> insert into t_stu values(1,'法外狂徒張三','男');
Query OK, 1 row affected (0.00 sec)
mysql> select * from t_stu;
+------+--------------------+--------+
| sid | sname | gender |
+------+--------------------+--------+
| 1 | 法外狂徒張三 | 男 |
+------+--------------------+--------+
1 row in set (0.00 sec)
字符集應該一致
set names gbk
set names utf8