#字符集配置
默认安装下,YashanDB服务端、Linux客户端、JDBC客户端等均为UTF8字符集,Windows客户端字符集为GBK。
如果服务端和客户端设置的字符集不同,数据库操作产生的最终结果可能会与预期不一致(在客户端输入的字符串会以服务端字符集格式进行处理),请根据实际需求合理规划配置数据库服务端和客户端需要使用的字符集。
# 配置原则
在YashanDB中,字符集相关配置可分为字符集(CHARACTER_SET)和国家字符集(NATIONAL_CHARACTER_SET)。
# 字符集
字符集配置由CHARACTER_SET参数控制,用于指定除NCHAR、NVARCHAR以及NCLOB类型外的其他普通数据类型数据的字符编码方式。
| 字符集 | 配置原则 |
|---|---|
| GBK | 如果数据库只需要支持中文,数据量很大,性能要求也很高,建议选择双字节定长编码的中文字符集GBK。 |
| UTF8 | 如果应用程序需要处理各种各样的文字,或者需要将处理结果发布到不同语言的国家或地区,建议选择Unicode字符集,即UTF8。 此项为YashanDB推荐和默认的字符集。 |
| ASCII | 如果数据库只需要支持ASCII收录的拉丁系字符,例如英语和部分西欧语言,则可以选择ASCII字符集。 |
| ISO88591 | 此字符集为单字节编码,能表示的字符范围是0-255,仅应用于全英文场景。 |
| GB18030 | 此字符集达到GB18030-2022标准的实现级别三。如果数据库有大量使用中文的场景,且对生僻字的显示、处理、输出有比较严格的要求,可以选择此字符集。 在YashanDB中,GB18030字符集仅支持ASCII范围内的字符进行大小写转换。 |
# 国家字符集
国家字符集配置由NATIONAL_CHARACTER_SET参数控制,用于指定NCHAR、NVARCHAR以及NCLOB类型数据的字符编码方式,决定如何存储和处理这些数据。
| 国家字符集 | 配置原则 |
|---|---|
| UTF16 | YashanDB默认的国家字符集,且仅支持为UTF16。 |
# 配置方法
# 设置服务端字符集
服务端字符集的限制如下:
若数据库已创建,不允许再修改字符集、国家字符集配置。
如需使用TAC表或LSC表,数据库服务端的字符集必须设置为UTF8或GB18030。
服务端字符集设置方法:
初始数据库:在安装部署过程中,可通过设置配置文件({集群名称}.toml)中的建库参数CHARACTER_SET指定初始数据库的字符集。
非初始数据库:安装完成后,如需删除初始数据库并自定义新建数据库,可以通过CREATE DATABASE语句中的CHARACTER SET、NATIONAL CHARACTER SET字段指定新数据库的字符集、国家字符集。
CREATE DATABASE yashandb CHARACTER SET utf8;
# 修改客户端字符集
在YashanDB客户端文件夹中新建client文件夹,并于client文件夹中新建空文件yasc_env.ini。
$ mkdir client $ cd client $ vi yasc_env.ini设置环境变量。
$ vi ~/.bashrc export YASDB_HOME=/home/yasdb/yashandb_client $ source ~/.bashrcNote:
YASDB_HOME路径需要指向YashanDB客户端文件夹。
通过修改客户端环境变量文件yasc_env.ini设置客户端字符集。
$ cd $YASDB_HOME/client $ vi yasc_env.ini # 添加如下信息,本文以GBK为例,实际配置时可按需配置为GBK、ASCII或ISO88591 CHARACTER_SET=GBK

