postgresql/lightdb GBK支持(非正式参考)

您所在的位置:网站首页 gb18030和gb2312区别 postgresql/lightdb GBK支持(非正式参考)

postgresql/lightdb GBK支持(非正式参考)

2023-06-07 23:22| 来源: 网络整理| 查看: 265

首先来看下GB2312,GBK以及GB18030的区别。分几个方面:

1、收录汉字

GB2312:基本集共收入汉字6763个和非汉字图形字符682个。

GBK:共收录了21003个汉字。

GB18030 :共收录汉字70244个。

2、兼容性

GB2312:基本满足了汉字的计算机处理需要,对于人名、古汉语等方面出现的罕用字,GB 2312不能处理。

GBK:GBK 向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准。

GB18030 :对GB 2312-1980完全向后兼容,与GBK基本向后兼容,并支持Unicode(GB 13000)的所有码位。

3、发布时间

GB2312:由中国国家标准总局1980年发布,1981年5月1日开始实施。

GBK:1995年12月1日制订。

GB18030 :初版于2000年3月17日发布,现行版本于2005年11月8日发布,2006年5月1日实施。

4、编码

GB2312:通常采用EUC储存方法,以便兼容于ASCII。每个汉字及符号以两个字节来表示。

GBK:GBK是采用单双字节变长编码,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码。

GB18030 :GB18030包含三种长度的编码:单字节的ASCII、双字节的GBK(略带扩展)、以及用于填补所有Unicode码位的四字节UTF区块。

 

  也就是一般来说一种字符集会有对应的编码方式,不过也不一一对应,比如UTF可以用于存储任何字符集。 

 

  有几个方面会影响程序中字符的编码方式,包括源文件的编码格式(一般都是UTF-8,因为编程语言都是欧美发明,所以用UTF-8才是正统,GBK之类反而怪异)、gcc/clang/vc编译选项、运行时OS环境(主要也是本地化和UTF-8)。所以一般前两者约定大于规范,第三者真就是规范的问题,因为有时候会有政策、认证要求。

https://doxygen.postgresql.org/utf8__and__gbk_8c.html

https://www.postgresql.org/docs/current/multibyte.html

postgresql中客户端与服务端编码以及乱码的原因分析(一篇足够)

mysql innodb表 utf8 gbk占用空间相同,但是在postgresql中,EUC_CN占用的空间比UTF-8还要大。

[zjh@hs-10-20-30-193 14203]$ export LANG=zh_CN.GB2312 [zjh@hs-10-20-30-193 14203]$ lt_initdb -D ~/stage/lightdb-x/gbk_data -E EUC_CN[zjh@hs-10-20-30-193 14203]$ ltsql -p25433 ltsql (13.8-22.4) Type "help" for help. zjh@postgres=# create table foo_utf8(v varchar(32)); zjh@postgres=# insert into foo_utf8 select '中国人民' from generate_series(1,10000000); zjh@postgres=# select * from pg_relation_size('foo_utf8'); pg_relation_size ------------------ 574308352 (1 row)[zjh@hs-10-20-30-193 14203]$ export LANG=zh_CN.UTF-8 [zjh@hs-10-20-30-193 14203]$ ltsql -p25432 ltsql (13.8-22.4) Type "help" for help. zjh@postgres=# show %encoding%; name | setting | description -----------------+---------+---------------------------------------------------- client_encoding | UTF8 | Sets the client's character set encoding. server_encoding | UTF8 | Sets the server (database) character set encoding. (2 rows) zjh@postgres=# select * from pg_relation_size('foo_utf8'); pg_relation_size ------------------ 442818560 (1 row)

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3