Introduction
Mysql在客户端与服务器交互时涉及到几个字符集和collation的转换问题:
-
客户端发给服务器的查询语句的字符集是什么?
客户端发给服务器的语句的字符集由系统变量character_set_client定义。
-
服务器收到查询语句后会转换成什么字符集?
服务器将收到的查询语句从character_set_client转换为 character_set_connection,除非字符串常量显式指定了字符集。系统变量 collation_connection定义了字符串常量的collation.
-
服务器返回给客户端的数据的字符集 是什么?
服务器返回给客户端的数据字符集由系统变量[character_set_results][character_set_results]定义。
-
服务器采用什么字符集存储数据?
Mysql中字符串类型有两种。对于非二进制字符串类型(
char
,varchar
和text
)采用建表时指定的字符集存储,对于二进制类型的数据(binary
,varbinary
,blob
,tinyblob
,mediumblob
等类型的数据)采用character_set_connection定义的字符集所映射的二进制值存储,注 意这些类型本身是没有字符集的。
上面这些系统变量均是会话变量,改变它们的值不会影响其它客户端与服务器的连接。
如何设置字符集
我们通常用set names
语句设置连接相关的字符集。
1
|
|
等价于
1 2 3 |
|
## 如何查看设置的字符集
可以这样查看设置的系统变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
## References