2010年1月18日星期一

最新unicode 汉字全集打印

=============
一、最新unicode范围

=============

unicode
最新版本是2009年9月出版的5.2版,对汉字又进行了扩充。以往常说的20902个汉字,在unicode中从0x4e00-0x9fa5,但这不是全部的unicode汉字。最新版的unicode汉字块如下:

0x4E00-0x9FFF CJK 统一字型 常用字 共
20992个(实际只定义到0x9FC3)
0x3400-0x4DFF CJK 统一字型扩展表A 少用字 共 6656个
0nx20000-0x2A6DF CJK 统一字型扩展表B 少用字,历史上使用 共42720个
0xF900-0xFAFF CJK 兼容字型 重复字,可统一变体,共同字 共512个
n0x2F800-0x2FA1F CJK 兼容字型补遗 可统一变体 共544个

一共定义大陆,台湾,香港,新加坡,马来西亚汉字,日语和韩语汉字或偏旁部首71424个。某些位置可能还是空的。

unicode 汉字定义可以在http://www.unicode.org/charts/unihan.html
查到。可以直接输入16进制unicode码,也可以直接将汉字复制粘贴进入。


===============

二、打印unicode汉字的方法

===============

不清楚windows对unicode支持情况如何。下面的程序在ubuntu9.10下测试通过,调整范围即可打印整个unicode
Han(unihan)的字符。

view plaincopy to clipboardprint?
#!/bin/env python
#coding:utf8
#2010.1.17
#打印20992个汉字及unicode 16进制到hz.txt
f = open('hz.txt','w+')
i = 0
for ch in xrange(0x4e00, 0xa000):
i += 1
s = str(i)+' '+hex(ch)+':'+unichr(ch).encode('utf8')
f.write(s)
print s
if i % 10 == 0:
f.write('\n')

f.close()

程序输出文件结果摘录:

view plaincopy to clipboardprint?
1 0x4e00:一2 0x4e01:丁3 0x4e02:丂4 0x4e03:七5 0x4e04:丄6 0x4e05:丅7
0x4e06:丆8 0x4e07:万9 0x4e08:丈10 0x4e09:三
11 0x4e0a:上12 0x4e0b:下13 0x4e0c:丌14 0x4e0d:不15 0x4e0e:与16 0x4e0f:丏17
0x4e10:丐18 0x4e11:丑19 0x4e12:丒20 0x4e13:专
21 0x4e14:且22 0x4e15:丕23 0x4e16:世24 0x4e17:丗25 0x4e18:丘26 0x4e19:丙27
0x4e1a:业28 0x4e1b:丛29 0x4e1c:东30 0x4e1d:丝
31 0x4e1e:丞32 0x4e1f:丟33 0x4e20:丠34 0x4e21:両35 0x4e22:丢36 0x4e23:丣37
0x4e24:两38 0x4e25:严39 0x4e26:並40 0x4e27:丧
41 0x4e28:丨42 0x4e29:丩43 0x4e2a:个44 0x4e2b:丫45 0x4e2c:丬46 0x4e2d:中47
0x4e2e:丮48 0x4e2f:丯49 0x4e30:丰50 0x4e31:丱
51 0x4e32:串52 0x4e33:丳53 0x4e34:临54 0x4e35:丵55 0x4e36:丶56 0x4e37:丷57
0x4e38:丸58 0x4e39:丹59 0x4e3a:为60 0x4e3b:主
61 0x4e3c:丼62 0x4e3d:丽63 0x4e3e:举64 0x4e3f:丿65 0x4e40:乀66 0x4e41:乁67
0x4e42:乂68 0x4e43:乃69 0x4e44:乄70 0x4e45:久
...
...
...
20881 0x9f90:龐20882 0x9f91:龑20883 0x9f92:龒20884 0x9f93:龓20885
0x9f94:龔20886 0x9f95:龕20887 0x9f96:龖20888 0x9f97:龗20889 0x9f98:龘20890
0x9f99:龙
20891 0x9f9a:龚20892 0x9f9b:龛20893 0x9f9c:龜20894 0x9f9d:龝20895
0x9f9e:龞20896 0x9f9f:龟20897 0x9fa0:龠20898 0x9fa1:龡20899 0x9fa2:龢20900
0x9fa3:龣
20901 0x9fa4:龤20902 0x9fa5:龥20903 0x9fa6:龦20904 0x9fa7:龧20905
0x9fa8:龨20906 0x9fa9:龩20907 0x9faa:龪20908 0x9fab:龫20909 0x9fac:龬20910
0x9fad:龭
20911 0x9fae:龮20912 0x9faf:龯20913 0x9fb0:龰20914 0x9fb1:龱20915
0x9fb2:龲20916 0x9fb3:龳20917 0x9fb4:龴20918 0x9fb5:龵20919 0x9fb6:龶20920
0x9fb7:龷
20921 0x9fb8:龸20922 0x9fb9:龹20923 0x9fba:龺20924 0x9fbb:龻20925
0x9fbc:龼20926 0x9fbd:龽20927 0x9fbe:龾20928 0x9fbf:龿20929 0x9fc0:鿀20930
0x9fc1:鿁
20931 0x9fc2:鿂20932 0x9fc3:鿃20933 0x9fc4:鿄20934 0x9fc5:鿅20935
0x9fc6:鿆20936 0x9fc7:鿇20937 0x9fc8:鿈20938 0x9fc9:鿉20939

从打印结果看,0x4E00-0x9FC3是有汉字的。0x9FC4-0x9FFF还是空白。但随后的版本会逐渐往上增长。


======

三、参考:

======
官方说明:http://www.unicode.org/versions/Unicode5.0.0/ch12.pdf
unihan字符全集官方下载:ftp://ftp.unicode.org/Public/UNIDATA/Unihan.zip
最新报告:http://www.unicode.org/reports/tr38/
20902个unicode汉字及拼音表:
http://dl1.csdn.net/fd.php?i=14601582879492&s=ed7babc9bd585c105a8b58c8b33830d6

unicode 5.0和gb等的关系 http://www.fmddlmyy.cn/text24.html

没有评论: