`

unicode中简体中文编码

 
阅读更多

unicode中对于中文是使用“中日韩越统一表意文字”来储存的,其意思就是对中文,日本,韩文,越南文中有类似于中文这样形式或稍微有点不同的表意文字,都被统称成中日韩越统一表意文字 CJKV (主要为汉字、仿汉字如方块壮字、日本国字、韩国独有汉字、越南的喃字)。


所以,对于中文这种表意形的文字在unicode中是简繁混杂的甚至于还夹杂着别的国家的文字,使用我们常在输入判断时无法通过一个范围区间来判断或表达输入是否为简体中文。


其实对于一般的输入,对于表意文字的区间就可以了 4E00-9FFF 这对于绝大部分用户都是适合的,如果,你非得执着于只针对简体中文,那么就只能求助于gb2312了。


GB 2312 或 GB 2312-80 是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,又称GB0,由中国国家标准总局发布,1981年5月1日实施。GB2312编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。



GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个字符。

GB 2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。

对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。



gb2312是比较老的一个编码,但这里面全是简体中文,可惜的是这里的文字在unicode编码中不是全部连续的。无法或很难用一个正则来写出这个区间。但也不是没有办法去判断,6千多个文字已经有人把它的gbk码和unicode码做了映射。你可以用个list或map装载这个映射,再对输入文字进行配对判断。也许有人会认为这样效率会很低。但我想,如果你用map来装载unicode和字符的映射,每次对字符进行判断时,他都是对字符转成unicode进行hash运算再去找相应的地址,不需要一个个来比对的,效率应该是差不到哪去,只是费点内存而以,当然,这是我自己想当然的,没做过实验,谁要有做过实验的也请麻烦告下我结果。


下面是网上转载的一个unicode和gb2312的编码映射6763个汉字,我粗略的和unicode对照了下,应该是没错的,贴出来,给那些需求的人们一个查找的地方

 

内容太长,贴不全,以附件上传

 

  0x4E00, /* GB2312 Code: 0xD2BB ==>一 Row:50 Col:27 */
    0x4E01, /* GB2312 Code: 0xB6A1 ==>丁 Row:22 Col:01 */
  ……
2
0
分享到:
评论
1 楼 maglic 2012-04-11  
有木有繁体中文的映射呢?
这个list有6000多条,装载应该会很大吧。要试试才知道了。

相关推荐

Global site tag (gtag.js) - Google Analytics