字符集(CLIENT_ENCODING)
📄字数 624
👁️阅读量 加载中...
引入版本
v11.0.0
功能描述
该参数用于指定客户端所使用的字符集编码(等效 CHAR_SET),即会话字符集。服务端依据会话字符集和库字符集,对会话内容进行字符集转换。
参数属性
属性 | 描述 |
---|---|
参数类型 | VARCHAR |
默认值 | GBK |
取值范围 | {UTF8,GBK,GB18030,BINARY,etc.} |
影响范围 | 会话级 |
修改方式 | 在线修改,立即生效 |
提示
支持查看系统变量 CHARSETS 或访问系统表 SYSDBA.SYS_CHARSETS 查看受系统支持的字符集。
使用场景说明
- 只有字符类的数据才会涉及字符集转换,数据入库会进行客户端字符集向库字符集转换,数据访问会进行库字符集向客户端字符集转换。
- 避开字符集转换可减少性能开销。
- 若未显式指定 CLIENT_ENCODING,则使用系统参数 def_charset 作为连接字符集。
- 当客户端实际字符集与连接会话上设置的字符集不一致时,会出现乱码。
- 当前版本 JDBC 驱动不支持指定字符集的排序规则。
注意
字符集的排序规则区别:ci 不区分大小写,bin 区分大小写,cs 区分大小写。创建库和连接会话字符集在不指定 bin 和 ci 后缀时使用bin类字符集(同一字符集不同后缀也涉及字符集转换问题)。
示例
查询当前会话的字符集
sqlSQL> SHOW CLIENT_ENCODING; +-----------------+ | CLIENT_ENCODING | +-----------------+ | UTF8 | +-----------------+ (1 row) Use time:0 ms.
设置会话字符集
sqlSQL> SET CLIENT_ENCODING TO GBK;