`
chenlb
  • 浏览: 693332 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Unicode中文排序

阅读更多
转载: http://www.bullog.cn/blogs/cathayan/archives/33231.aspx

在Linux下面全面用UTF-8后就曾发现过中文排序有点不理解了,昨天才看到别人讨论,原来Unicode里面的汉字顺序居然是《康熙字典》的偏旁部首顺序。查了一下,康熙字典中的部首共有214个:

<quote>一丨丶丿乙亅二亠人儿入八冂冖冫几凵刀力勹匕匚匸十卜卩厂厶又口囗土士夂夊夕大女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戶手支攴文斗斤方无日曰月木欠止歹殳毋比毛氏气水火爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣自至臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里金長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黑黹黽鼎鼓鼠鼻齊齒龍龜龠
</quote>
像在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字
分享到:
评论
2 楼 chenlb 2008-10-20  
我想:找个字到拼音的映射表,

方式一、可以用TreeMap, 拼音作key,字作value

方式二、实现Comparator.compare用拼音
1 楼 cesia1984 2008-10-09  
想知道怎么按照拼音来进行排序

相关推荐

    汉字Unicode根据拼音排序表

    汉字 unicode , 这种格式的,汉字表是在http://xh.5156edu.com/conversion.html这个页面里面找的zmj.php.js这个文件获取的。

    c++ 五笔Unicode词库 排序

    将极点五笔的五笔词库导出为txt文件,在文件尾添加...之后用我发的这个小程序将这个文件重排序,再导入到极点五笔词库就好。 其实这个也没有太大的用,只是我个人在看C++ Primer,用了vector的一点知识,练习一下。

    汉字拼音对应的unicode编码

    汉字转换成16进制对应的unicode编码,用于汉字拼音排序

    java中文排序,数字字母汉字排序

    默认情况下,Java使用自然排序,即按照字符串的Unicode值进行排序,这对于英文字符和数字来说通常是合适的,但对于中文字符则不是我们期望的排序方式。 为了实现中文、数字和字母的排序,我们需要创建一个`...

    解决Sqlite中文排序问题(网页)

    总结来说,解决SQLite中文排序问题的关键在于理解Unicode排序算法,并在SQLite中创建自定义的Collation。通过编写UDF将中文转换为可比较的形式,可以实现符合预期的中文排序。这个过程可能涉及编码工作,但能确保在...

    汉字与unicode编码(十六进制)对照表

    在这个“汉字与unicode编码(十六进制)对照表”中,我们可以找到汉字与其对应的Unicode编码,这对于编程、文本处理以及国际化和本地化工作来说具有重要的参考价值。 Unicode编码系统包括多个平面,其中基本多文种...

    Java 中文字符按Unicode排序的实现方法

    在 Java 中,实现中文字符按 Unicode 排序是一件非常重要的事情,特别是在处理中文字符串时。今天,我们将探讨如何使用 Java 语言来实现中文字符按 Unicode 排序。 在 Java 中,String 类提供了默认的比较方案,...

    关于中文英文混合排序javaDemo

    首先,我们要明白在Java中,默认的字符串排序是基于Unicode编码的,这可能会导致中文字符与英文字符混合排序时出现问题。例如,英文字符通常会排在中文字符前面,因为它们的Unicode值更低。为了解决这个问题,我们...

    unicode汉字编码表

    然而,Unicode的汉字编码并不按照汉字的传统笔画或部首排序,而是基于历史上的编码习惯和字符的使用频率。因此,虽然Unicode汉字编码表提供了方便的查找功能,但它并不适合进行汉字的分类或学习。 Unicode的发展也...

    MFC汉字排序

    在Microsoft Foundation Classes (MFC)库中,进行汉字排序是一个常见的需求,特别是在处理中文数据时。MFC提供了丰富的类和函数来支持C++编程,它为Windows应用程序开发提供了一种结构化的方式。在这个主题中,我们...

    UNICODE汉字对照表,用access存储

    标题中的“UNICODE汉字对照表,用access存储”指的是使用Microsoft Access数据库来管理UNICODE编码的汉字与其对应的字符。在IT领域,Unicode是一种国际标准,它定义了一个字符集,包括几乎世界上所有语言的文字,其中...

    SQL 中文排序

    默认情况下,SQL的排序机制可能会导致中文字符按照其内部编码(通常是Unicode编码)进行排序,这与我们的预期(比如按照拼音或笔画顺序)可能不一致。本文将详细介绍如何在SQL中实现中文排序,特别是针对MSSQL2005及...

    汉字和数字混合排序

    在计算机科学领域,汉字和数字混合排序是一项挑战性任务,特别是在处理中文文本数据时。由于汉字与数字在数据结构和编码上的本质差异,混合排序需要特定的算法和技术来实现。以下将详细介绍汉字和数字混合排序的相关...

    Android 中英文混合排序

    在Java中,我们可以使用`Collections.sort()`方法对List对象进行排序,但这个方法默认按照Unicode编码排序,对于中英文混合的情况并不适用。因此,我们需要自定义一个Comparator来完成这个任务。 1. **自定义...

    Ext中文排序问题

    然而,默认情况下,ExtJS的数据排序功能主要基于英文字符集,当遇到中文数据时,排序结果可能不符合预期。 #### 问题分析 中文排序的核心在于正确处理中文字符的比较。由于中文字符的Unicode编码并非按照汉语拼音或...

    java汉字笔画排序源码

    在中文环境中,有时我们需要按照汉字的笔画数量来对汉字进行排序,这在信息检索、数据分析、中文文本处理等领域有广泛应用。 标题"java汉字笔画排序源码"表明这是一个关于使用Java编程语言实现汉字笔画排序的代码...

    swift-中文排序

    Swift本身提供的排序功能对于英文字符集是足够的,但当涉及到中文字符时,由于Unicode编码的复杂性,直接使用默认的排序方法可能无法得到预期的结果。中文字符的排序需要考虑到汉字的拼音、笔画或者字典顺序。...

    js中文排序

    对于中文排序,我们需要比较的是字符串在中文字典中的位置,而不是它们的Unicode值。以下是一个简单的比较函数示例: ```javascript function compareChinese(a, b) { return a.localeCompare(b, 'zh-Hans-CN', { ...

    Unicode汉字编码顺序对应汉字的粤语拼音库

    Unicode汉字编码顺序对应汉字的粤语拼音库 一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世 jat1 ding1 丂 cat1 soeng5 ti1 丆 maan6 zoeng6 saam1 soeng5 haa6 gei1 bat1 jyu5 min5 koi3 cau2 cau2 zyun1 ce2 pei1...

Global site tag (gtag.js) - Google Analytics