查看字符集变量:
SHOW VARIABLES LIKE 'character_set%';
查看字符序变量:
SHOW VARIABLES LIKE '%collation%';
local 命令查看系统环境的字符集
因为服务端 character_set_client 被设置为 GBK 后,服务器会将请求的字节序列(UTF8)当作用 GBK 编码的字节序列。 例如:“牛”的 UTF8编码是 E7899B,这个编码在GBK里对应的就是其他字符了,所以导致查询的结果为空。
set character_set_client=gbk;
全局变量
SHOW global VARIABLES LIKE 'character_set%';
查看当前连接的字符集
SELECT @@character_set_connection;
MySQL 可以设置:
服务器级字符集、
数据库级字符集、
数据表级字符集、
表列级别字符集。
实际上,最终使用字符集的地方是存储字符的列,它决定了数据库中存储的数据采用哪个字符集的编码和字符序。
character_set_server:服务器的字符集是 latin1
collation_server: 服务器的字符序是 latin1_swedish_ci
character_set_database:数据库的字符集是 latin1
collation_database:数据库的字符序是 latin1_swedish_ci
在 my.cnf | my.ini 中配置
[mysqld]
character-set-server=utf8
MySQL提供了 character_set_client、character_set_connection 和 character_set_results 三个变量来辅助客户端与服务端的通信。
客户端「默认的字符集」与客户端所在的操作系统环境变量有关,
如果在 Unix 或 Linux 上,你设置了 LANG 或 LC_ALL 这样的环境变量,那么 MySQL 的客户端程序会默认检查应该使用哪一个字符集。
例如:如果将 LC_ALL 设置为 en_US.UTF-8 ,那么 mysql 客户端将默认使用 UTF8 字符集 。
用 local 命令查看系统环境的字符集
这三个变量其实是有作用域的(global | session),每一次创建新的连接,就为这三个变量创建了一个会话作用域 session ,
刚才的设置都这是针对当前 session 起作用的。
关闭后或重新打开新的连接,这三个变量都会恢复到最初的设置。