客户端和服务器之间交互的字符集叫连接字符集设置
对于客户端和服务器端交互MySQL提供了三个参数:
- character_set_client: 客户端来源数据使用的字符集
通过这个参数客户端把自己用的是什么字符集告诉服务器端
- character_set_connection: 连接层字符集
连接层是在服务器端,连接层接收到来自客户端的字符集会判断类型是否和自己一致,不一致就转换类型,
然后再到MySQL服务器内部,内部再分为服务器字符集、数据库字符集....
- character_set_results: 返回结果字符集
通过这个参数服务器端根据客户端请求的字符集返回相应的字符集结果给客户端
数据在客户端和服务器之间交互的过程中字符集转换的过程
- MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connectin
- 进行内部操作前将请求数据从character_set_connection转换成内部操作字符集
- 将操作结果从内部操作字符集转换为character_set_results
这三个参数设定的字符集应该相同,set names 可以同时把三个参数设置成同一种编码格式,仅对本次有效