Unicode与GBK互转

您所在的位置:网站首页 GBK编码汉字UTF互转表 Unicode与GBK互转

Unicode与GBK互转

2023-10-27 20:27| 来源: 网络整理| 查看: 265

              Tags: encoding,c

1. gb2312

规定: 一个小于127的字符的意义与原来相同, 但两个大于127的字符连在一起时, 就表示 一个汉字, 前面的一个字节(他称之为高字节)从0xA1用到 0xF7, 后面一个字节(低字节) 从0xA1到0xFE, 这样我们就可以组合出大约7000多个简体汉字了. 在这些编码里, 我们还 把数学符号,罗马希腊的 字母,日文的假名们都编进去了, 连在 ASCII 里本来就有的数字 ,标点,字母都统统重新编了两个字节长的编码, 这就是常说的"全角"字符, 而原来在127 号以下的那些就叫"半角"字符了.

中国人民看到这样很不错, 于是就把这种汉字方案叫做 "GB2312". GB2312 是对 ASCII 的中文扩展.

2. GBK

但是中国的汉字太多了, 我们很快就就发现有许多人的人名没有办法在这里打出来, 特别 是某些很会麻烦别人的国家领导人. 于是我们不得不继续把 GB2312 没有用到的码位找出 来老实不客气地用上.

后来还是不够用, 于是干脆不再要求低字节一定是127号之后的内码, 只要第一个字节是 大于127就固定表示这是一个汉字的开始, 不管后面跟的是不是扩展字 符集里的内容. 结 果扩展之后的编码方案被称为 "GBK" 标准, GBK 包括了 GB2312 的所有内容, 同时又增 加了近20000个新的汉字(包括繁体字)和符号.

Note: Unicode相关的基础知识请参数上一篇博文.

3. Unicode与GBK互转

3.1 GBK --> Unicode

Unicode 与 GBK 是两个完全不样的字符编码方案, 其两者没有直接关系, 要对其进行相 互转换, 最直接最高效的方法是查表.

GBK与Unicode的映射表可以从网上下载:     http://www.gnu.org/directory/libiconv.html

显然, 只需要把下载下来的映射表用一个二维数组表示即可, tab_GBK_to_UCS2[i][0]表 示GBK编码值,  tab_GBK_to_UCS2[i][1]表示Unicode值. // #c--- static const unsigned short tab_GBK_to_UCS2[][2] = {    /* GBK    Unicode     字 */       {0x8140, 0x4E02}, // 丂     {0x8141, 0x4E04}, // 丄     {0x8142, 0x4E05}, // 丅     {0x8143, 0x



【本文地址】


今日新闻


推荐新闻


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