GBase8s数据库支持中文生僻字
注意事项
将数据导入到GBase8s数据库中,我们会进行建库、建表、建字段的操作,当这些操作完成以后在初期导入一些测试或样例数据的时候都比较顺利。但有时到了正式环境,数据变多以后,里面藏着一些意向不到的特殊字符或生僻字会导致我们导入失败。所以以此文档记录在GBase8s建库过程中对生僻字处理的注意事项
关键的环境变量
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
字符集名称及编码对照表
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;

GBase8s数据库支持中文生僻字注意事项相关推荐

  1. Windows系统对中文生僻字支持问题的解决办法

    Windows系统对中文生僻字支持问题的解决办法 1.Windows API对GB18030-2000 的支持下列 Windows API 提供对GB18030-2000 的支持. IsValidCo ...

  2. Oracle存储中文生僻字:Navicat客户端不乱码而Developer显示乱码

    登陆Oracle数据库,这里用SecureCRT,很好用的一个SSH连接工具: //切换到oracle su - oracle //登录sqlplus sqlplus /nolog //连接orcal ...

  3. pdflib:使用pdflib输出中文生僻字和繁体字乱码问题

    使用pdflib输出中文生僻字和繁体字乱码问题. 添加中文字体语句,如下: pdf->obj[2+i].offset = pdf->offset; length = LPDF_SPRINT ...

  4. sqlserver中文生僻字乱码问题

    sqlserver中文生僻字乱码问题解决 场景:前端输入生僻字,e.g. 㙍.㮾,存入到数据库为乱码(㙍/-). 解决:修改会存生僻字的字段(一般地址字段)的数据类型为nvarchar,在插入或更新s ...

  5. LaTeX中文生僻字显示

    LaTeX中文生僻字显示 在处理"旻"这个字的时候,TexLive 2021+XeLaTeX编译成功但是字无法正常显示. 于是网上搜索,得到以下解决方法 \usepackage{c ...

  6. TCPDF中文生僻字解决方案

    根据网上方法中文乱码解决 但是出现生僻字还是乱码 官网下载最新包 创建个新文件 代码如下 <?php require_once('tcpdf.php'); $pdf = new TCPDF(); ...

  7. Java中文生僻字排序

    JDK中的java.text.Collator 排序处理生僻字会失败,现引入新的Jar包进行处理. 引入icu4j进行处理,改包主要是为软件应用提供Unicode和全球化支持的一套成熟.广泛使用的C/ ...

  8. 数据库存储解决生僻字

    一.Oracle数据库 就一般情况来说,Oracle存储中英文的字段用varchar2类型就可以了,但有些时候,遇到生僻字就不行了, 在默认字符集环境下,实现Oracle储存生僻字: 㛃.䶮-(使用n ...

  9. mysql支持中文_mysql数据库支持中文

    如果支持中文推荐将字符集设置成utf8可以一劳永逸,解决一些不必要的麻烦,对未来系统升级也可能有帮助.下面对设置方法进行列举 1.治标先治本,最好的方法就是在安装mysql的时候设置默认字符集为utf ...

最新文章

  1. python的迭代器for_python特性(二):迭代器与for语句
  2. Redis Cluster 原理你了解不?
  3. php和python哪个工资高-Java、Python、Php学哪个好,哪个更有前景?
  4. php和python区别-php与python的区别
  5. CentOs7下systemd管理知识要点
  6. QLibrary执行load失败
  7. C++函数指针和函数重载
  8. python 正则 去除字符串中异常字符
  9. 【Python】4500字、10个案例分享几个Python可视化小技巧,助你绘制高质量图表
  10. Struts2封装获取表单数据方式
  11. leetcode1333. 餐厅过滤器
  12. Maven入门详解以及Eclisp的集成
  13. WordPress登陆插件Erphplogin Pro QQ登陆/微博/微信登录/弹窗登录
  14. SQL Server商业智能–简介
  15. 中国第三位世界拳王诞生 徐灿夺得WBA羽量级金腰带
  16. ext2删除文件恢复笔记
  17. 【LeetCode】【数组】题号:*303,区域和检索
  18. windows驱动加载顺序
  19. 传奇客户端小地图上的文字描述修改方法
  20. openvino踩坑记(ImportError: DLL load failed while importing ie_api)

热门文章

  1. 分享冰点文库去广告版
  2. 如何将多张动图拼在一起?手把手教你一键快速拼接动图
  3. 微信内嵌浏览器 无法下载文件?怎么解决?
  4. 汽车诊断系统相关知识
  5. 澜沧古茶正式冲刺香港上市:极其依赖第三方,杜春峄等人提前套现
  6. springboot自定义logbackAppender
  7. adb操控夜神模拟器设置剪切板
  8. 【物联网】28.物联网开发 - 安全性
  9. GMSSL开源库--初步接触SM2
  10. 通过快捷方式快速更换桌面壁纸(必应每日壁纸)