MySQL服务器SQL查询与响应字符集编码及修改方法问询
MySQL查询语句与响应的字符集说明
发送查询语句的字符集
你发送的SELECT * FROM students;语句的编码字符集,由客户端与MySQL服务器建立连接时协商的连接字符集决定:
- 默认情况下,会使用客户端操作系统的字符集,或者MySQL配置中指定的默认连接字符集(常见如
utf8mb4)。 - 这个字符集由
character_set_client系统变量控制,服务器会用该字符集解析你发送的SQL语句。
服务器返回响应的字符集
服务器返回查询结果的字符集,主要受两个因素影响:
- 首先是
students表中各字段本身定义的字符集; - 其次是
character_set_results系统变量:服务器会将查询结果转换为该变量指定的字符集后返回给客户端。若无特殊设置,通常会沿用连接时协商的字符集。
能否修改这些字符集?
当然可以,常见修改方式如下:
- 临时修改(仅当前会话生效):
- 同时设置发送和返回的字符集:执行
SET NAMES utf8mb4;,该命令会一次性将character_set_client、character_set_connection、character_set_results设为指定值(如utf8mb4)。 - 单独修改返回结果的字符集:执行
SET character_set_results=utf8mb4;。
- 同时设置发送和返回的字符集:执行
- 连接时指定:
- 命令行客户端:启动时添加参数
mysql --default-character-set=utf8mb4。 - 编程语言连接库:在连接字符串中指定字符集(比如Python的MySQLdb库可设置
charset='utf8mb4')。
- 命令行客户端:启动时添加参数
- 全局永久修改:
修改MySQL配置文件(如my.cnf或my.ini),添加或修改以下配置项后重启MySQL服务:[client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
内容的提问来源于stack exchange,提问作者user8240761
相关产品推荐
相关产品推荐

