• 欢迎访问VPS岛网站,国外VPS,国内VPS,国外服务器,国内服务器,服务器主机,测评及优惠码,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站 QQ群

mysql 字符集乱码问题

mysql技术 青衫解衣 19次浏览 已收录 0个评论

#查看mysql数据库的字符集.

mysql> show variables like "%character%";
+--------------------------+-----------------------------+
| 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       | /data/mysql/share/charsets/ |
+--------------------------+-----------------------------+
8 rows in set (0.01 sec)

#客户端查看时,客户端的字符集.

mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)

#客户端查询时,数据库返回给客户使用的字符集.

mysql> set character_set_results=gbk;
Query OK, 0 rows affected (0.00 sec)

#数据存储时的连接器,使用gbk和utf都行,存储数据时都会转换为utf8.

set character_set_connection=utf8;

如果客户端插入时和取出时字符集不一样就会乱码?

#设置客户端的字符集为utf8.

mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)

#创建数据库t5.

mysql> create table t5 ( name char(20) );
Query OK, 0 rows affected (0.02 sec)

#插入使用的字符集utf8;

mysql> insert into t5 values ("中国");
Query OK, 1 row affected (0.00 sec)

#查看时没问题.

mysql> select * from t5;
+--------+
| name   |
+--------+
| 中国   |
+--------+
1 row in set (0.00 sec)

#取出时让服务端返回给gbk的字符集.

mysql> set character_set_results=gbk;
Query OK, 0 rows affected (0.00 sec)

#设置服务端返回时gbk就乱码了.

mysql> select * from t5;
+------+
| name |
+------+
| א¹|
+------+
1 row in set (0.02 sec)

注意:我使用的客户端xshell链接,字符集为utf8字符集.


#如果把客户端/连接器/服务端都设置为utf8肯定不会乱码.

mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t5;
+--------+
| name   |
+--------+
| 中国   |
+--------+
1 row in set (0.00 sec)

#使用names可以直接将这三条都设置为同一个字符集.

mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)

#查看字符集发现clien/connection/results都变为gbk.

mysql> show variables like "%character%";
+--------------------------+-----------------------------+
| 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       | /data/mysql/share/charsets/ |
+--------------------------+-----------------------------+
8 rows in set (0.00 sec)


VPS岛 的文章和资源来自互联网,仅作为参考资料,如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。丨 转载请注明mysql 字符集乱码问题
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址