数据库字符集编码

本文详细解释了MySQL中的字符集和collation设置,包括服务器、数据库、表和列级别的设定,以及客户端环境对字符集选择的影响。特别强调了local命令在查看系统环境字符集的作用和session作用域。
摘要由CSDN通过智能技术生成

查看字符集变量:

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 起作用的。

关闭后或重新打开新的连接,这三个变量都会恢复到最初的设置。

 

 

 

 

 

 

 

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值