ITPub博客

首页 > 数据库 > 国内数据库 > GBase8s数据库支持中文生僻字

GBase8s数据库支持中文生僻字

原创 国内数据库 作者:gbase8sl301 时间:2020-08-04 14:59:21 0 删除 编辑

GBase 8s 数据库支持中文 生僻 字

注意事项

将 数据导入到GBase8s 数据库中,我们会进行建库、建表、建字段的操作,当这些操作完成以后在初期导入一些测试或样例数据的时候都比较顺利。但有时到了正式环境,数据变多以后,里面藏着一些意向不到的特殊字符或生僻字会导致我们导入失败。所以以此文档记录在 G B ase8s 建库过程中对生僻字处理的注意事项

关键的 环境变量

n  DB _LOCALE

 

含义:

通过 DB_LOCALE 环境变量设置的数据库语言环境指定数据库服务器用于正确解释特定数据库中语言环境相关的数据类型( NCHAR 和 NVARCHAR )所需的语言、地域和代码集。 DB_LOCALE 中指定的代码集确定哪些字符在任何字符列中都是有效的,并且确定数据库对象(如数据库、表、列和视图)的名称。数据库服务器使用 DB_LOCALE 环境变量指定的数据库代码集将数据传入和传出数据库。

 

用途:

1.  在客户机应用程序和数据库服务器交换字符数据时,如果 DB_LOCALE 环境变量(在客户机计算机上)的值与 CLIENT_LOCALE 的值不同,客户机应用程序将执行代码集转换。 代码集转换防止这两种代码集不同时发生数据破坏。

2.  在客户机应用程序请求连接时,它将包括 DB_LOCALE (如果已设置)的信息发送至数据库服务器。

3.  在确定如何设置服务器处理语言环境的数据库信息时,数据库服务器使用 DB_LOCALE 。

4.  在客户机应用程序尝试打开数据库时,数据库服务器将客户机应用程序传递的 DB_LOCALE 环境变量的值与数据库中存储的数据库语言环境进行比较。

5.  当数据库服务器存取与语言环境相关的数据类型的列时,数据库服务器使用 DB_LOCALE 指定的语言环境。

6.  当数据库服务器创建新数据库时,它将检查数据库语言环境(DB_LOCALE ),以确定如何在数据库的系统目录中存储字符信息。此信息包括诸如如何处理正则表达式、比较字符串以及确保代码集的正确使用的操作。

 

所以 如果 我们的 数据库需要 支持 中文 字符 ,我们必须在建库的时候 必须 将该变量 设置 为 zh_CN.utf8 或 zh_cn.GB18030-2000 。 否则如果 按照 en_us.8859-1 进行 建库 后 , 在插入中午字符后 将会 变成乱码 。以下 是字符集名称及编码对照表

 

字符集名称

编码

8859-1

819

gb

57357

GB2312-80

57357

utf8

57372

big5

57352

GB18030-2000

5488

字符集名称及编码对照表

n  GL_USEGLU

 

含义:

如果想使NCHAR 和 NVARCHAR 数据类型的字段内的数据支持 unicode ,则必须对 GL_USEGLU 环境变量进行使用设置

 

所以如果我们的数据库不仅需要支持中文,还需要支持生僻字符,则必须在建库前开启此变量

实际操作

我们需要把生僻字“”插入到数据库中,根据刚才的描述我们需要正确设置两个地方才能保证“”字成功入库

 

我们首先使用echo $DB_LOCALE; 命令查看当前该变量的值

 

发现当前该变量的值不是zh_CN.utf8 或 zh_cn.GB18030-2000

所以我们在建立数据库之前,需要先将变量进行修改

 

 

其次我们需要使用onstat -g env 命令确认 GL_USEGLU 是否进行了设置

 

 

当这两个变量都设置完毕后,我们使用dbaccess 建立数据库 testdb3

 

 

 

 

建表操作、新增生僻字记录,详情如下图所示,操作成功

使用如下语句确认当前数据库的编码,显示的是zh_CN.57372, 根据刚才的字符集名称及编码对照表,可知编码 57372 对应的字符集名称是 utf8

SELECT * FROM sysmaster:sysdbslocale WHERE dbs_dbsname like 'testdb3%';

 

 

以下是我们测试当不设置GL_USEGLU 变量的情况

 

我们通过unset GL_USEGLU 命令变量使 GL_USEGLU 失效

 

 

使用onstat -g env 命令对当前环境变量进行查看,发现已经没有了 GL_USEGLU 环境变量

 

 

此时我们通过dbaccess 建立了 testdb4 数据库

 

我们再插入刚才的生僻字“”将会如下图所示报错 34389 Illegal character 非法字符

 

再来测试插入正常汉字的情况

插入正常汉字是没有问题的

 

 

结论

当我们处理汉字中的生僻字的时候需要同时注意两个地方。在建立数据库前

需要正确设置DB_LOCALE 环境变量的值,需要是 zh_CN.utf8 或 zh_cn.GB18030-2000;

查看命令:echo $DB_LOCALE;

设置命令:export DB_LOCALE=zh_CN.utf8; 或 export DB_LOCALE=zh_cn.GB18030-2000;

GL_USEGLU 环境变量是否已进行设置

查看命令:onstat -g env

设置命令:export GL_USEGLU=1;

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980390/viewspace-2709106/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2020-08-04

  • 博文量
    9
  • 访问量
    9725