Unicode中文排序
转载: http://www.bullog.cn/blogs/cathayan/archives/33231.aspx
在Linux下面全面用UTF-8后就曾发现过中文排序有点不理解了,昨天才看到别人讨论,原来Unicode里面的汉字顺序居然是《康熙字典》的偏旁部首顺序。查了一下,康熙字典中的部首共有214个:
一丨丶丿乙亅二亠人儿入八冂冖冫几凵刀力勹匕匚匸十卜卩厂厶又口囗土士夂夊夕大女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戶手支攴文斗斤方无日曰月木欠止歹殳毋比毛氏气水火爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣自至臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里金長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黑黹黽鼎鼓鼠鼻齊齒龍龜龠
像在Google Docs里面,如果对Spreadsheet表格排序,中文就依据上面的部首顺序进行,部首在前的字就排在前面,如果部首相同,则算笔划数,笔划数相同的就不知道怎么排了。比如有这样的结果:
刘孙康张李王赵钱齊
它们的部首分别是:刀子广弓木王走金齊。
又有:刈刘则刹剂剔,文和贝同为4划,杀和齐同为6划,而点在竖前,撇在横前,按传统应该是“江山千古”(丶丨丿一乛)的顺序。另外还有“寒来暑往”(丶一丨丿乛),“天上人间”(一丨丿丶乛),札字(一丨丿丶乛)法,礼(丶一丨丿乛)字法等。
这样用Unicode的话,就是不加任何处理,排序出来的汉字也是很有道理的。但如果想排出拼音顺序就还得再想办法。
查Unicode和康熙的时候,还查到了这个海峰五笔超大字符集输入法,一个用于Win系统的五笔输入法,有86和98标准,最厉害的是:收录UNICODE超大字集全部七万多中日韩汉字,同时他们还提供一个exe来安装这个字体:CJK基本 [4E00-9FFF] 20992码位 实际20924字
CJK扩展A [3400-4DBF] 6592码位 实际6582字
CJK扩展B [20000-2A6DF] 42720码位 实际42711字
CJK扩展C [2A700-2BA7F] 4224码位 实际4219字
CJK兼容扩展 [2F800-2FA1F] 544码位 实际542字
CJK部首扩展 [2E80-2EFF] 128码位 实际116字
CJK康熙部首 [2F00-2FDF] 224码位 实际214字
CJK笔画 [31C0-31EF] 48码位 实际36字
CJK兼容 [F900-FAFF] 512个码位 实际474字