注册
深入理解达梦数据库参数CHARSET
专栏/培训园地/ 文章详情 /

深入理解达梦数据库参数CHARSET

大仁 2025/12/03 31 0 0
摘要

1参数作用
CHARSET功能:字符集选项。
取值:取值范围 0、1、2。0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。缺省值为 0。可选参数。
配置:dminit时指定,可选参数。

此参数在数据库创建成功后无法修改,可通过系统函数 SF_GET_UNICODE_FLAG()或 UNICODE()查询设置的参数值。
image.png

补充:
LENGTH_IN_CHAR是一个主要作用于varchar类型(即可变长类型)数据的参数,以存储汉字为例,当字符集为默认的gb18030时,若以若以字节为单位,则varchar(3)能存下1个汉字+1个英文。字符集为uft8时,以字节为单位,varchar(3)只能保存一个汉字。而当该参数设置为1时,实际上varchar的精度会进行拓展,在默认字符集下会变为定义长度的2倍,uft8情况下会变为定位长度的4倍。
24年q2版本之后,该参数已经废弃,默认值LENGTH_IN_CHAR=0,所有数据库均按照默认以字节为单位进行初始化。
image.png
image.png

2实验步骤
准备好两个实例,分别初始化指定参数CHARSET=1/0,数据库字符集分别指定utf8/gb18030
实例名 IP PORT_NUM CHARSET
DM01 192.168.137.137 5236 1(utf8)
DM02 192.168.137.137 5237 0(gb18030)
初始化实例
$ dminit path=/dmdata/data PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=256 CASE_SENSITIVE=1 CHARSET=1 DB_NAME=DM01 INSTANCE_NAME=DM01 PORT_NUM=5236 SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123

$ dminit path=/dmdata/data PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=256 CASE_SENSITIVE=1 CHARSET=0 DB_NAME=DM02 INSTANCE_NAME=DM02 PORT_NUM=5237 SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123

2.1 CHARSET=1
image.png
image.png

测试插入 10 个英文字符成功,插入 11 个英文字符失败
image.png
image.png
image.png
测试插入3个中文字符成功,4个中文字符失败,3个中文字符+1个英文字符成功,3个中文字符+2个英文字符失败

2.2 CHARSET=0
image.png
image.png

测试插入 10 个英文字符成功,插入 11 个英文字符失败

image.png
image.png

测试插入5个中文字符成功,6个中文字符失败,5个中文字符+1个英文字符失败

3 总结
1、对于 GB18030 字符集:字符以字节为单位时,每个英文字母占用 1 字节,每个中文占用 2 字节;
2、对于 UTF-8 字符集:字符以字节为单位时,每个英文字母占用 1 字节,每个中文占用 3 字节;
3、在默认情况下,varchar 类型以字节为单位时,两种字符集对于英文的支持是一样的,但 GB18030 对于中文会更加的友好

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服