转载:
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字
分享到:
相关推荐
汉字 unicode , 这种格式的,汉字表是在http://xh.5156edu.com/conversion.html这个页面里面找的zmj.php.js这个文件获取的。
将极点五笔的五笔词库导出为txt文件,在文件尾添加...之后用我发的这个小程序将这个文件重排序,再导入到极点五笔词库就好。 其实这个也没有太大的用,只是我个人在看C++ Primer,用了vector的一点知识,练习一下。
汉字转换成16进制对应的unicode编码,用于汉字拼音排序
默认情况下,Java使用自然排序,即按照字符串的Unicode值进行排序,这对于英文字符和数字来说通常是合适的,但对于中文字符则不是我们期望的排序方式。 为了实现中文、数字和字母的排序,我们需要创建一个`...
在Microsoft Foundation Classes (MFC)库中,进行汉字排序是一个常见的需求,特别是在处理中文数据时。MFC提供了丰富的类和函数来支持C++编程,它为Windows应用程序开发提供了一种结构化的方式。在这个主题中,我们...
总结来说,解决SQLite中文排序问题的关键在于理解Unicode排序算法,并在SQLite中创建自定义的Collation。通过编写UDF将中文转换为可比较的形式,可以实现符合预期的中文排序。这个过程可能涉及编码工作,但能确保在...
在这个“汉字与unicode编码(十六进制)对照表”中,我们可以找到汉字与其对应的Unicode编码,这对于编程、文本处理以及国际化和本地化工作来说具有重要的参考价值。 Unicode编码系统包括多个平面,其中基本多文种...
在 Java 中,实现中文字符按 Unicode 排序是一件非常重要的事情,特别是在处理中文字符串时。今天,我们将探讨如何使用 Java 语言来实现中文字符按 Unicode 排序。 在 Java 中,String 类提供了默认的比较方案,...
首先,我们要明白在Java中,默认的字符串排序是基于Unicode编码的,这可能会导致中文字符与英文字符混合排序时出现问题。例如,英文字符通常会排在中文字符前面,因为它们的Unicode值更低。为了解决这个问题,我们...
然而,Unicode的汉字编码并不按照汉字的传统笔画或部首排序,而是基于历史上的编码习惯和字符的使用频率。因此,虽然Unicode汉字编码表提供了方便的查找功能,但它并不适合进行汉字的分类或学习。 Unicode的发展也...
标题中的“UNICODE汉字对照表,用access存储”指的是使用Microsoft Access数据库来管理UNICODE编码的汉字与其对应的字符。在IT领域,Unicode是一种国际标准,它定义了一个字符集,包括几乎世界上所有语言的文字,其中...
默认情况下,SQL的排序机制可能会导致中文字符按照其内部编码(通常是Unicode编码)进行排序,这与我们的预期(比如按照拼音或笔画顺序)可能不一致。本文将详细介绍如何在SQL中实现中文排序,特别是针对MSSQL2005及...
在计算机科学领域,汉字和数字混合排序是一项挑战性任务,特别是在处理中文文本数据时。由于汉字与数字在数据结构和编码上的本质差异,混合排序需要特定的算法和技术来实现。以下将详细介绍汉字和数字混合排序的相关...
在Java中,我们可以使用`Collections.sort()`方法对List对象进行排序,但这个方法默认按照Unicode编码排序,对于中英文混合的情况并不适用。因此,我们需要自定义一个Comparator来完成这个任务。 1. **自定义...
然而,默认情况下,ExtJS的数据排序功能主要基于英文字符集,当遇到中文数据时,排序结果可能不符合预期。 #### 问题分析 中文排序的核心在于正确处理中文字符的比较。由于中文字符的Unicode编码并非按照汉语拼音或...
在中文环境中,有时我们需要按照汉字的笔画数量来对汉字进行排序,这在信息检索、数据分析、中文文本处理等领域有广泛应用。 标题"java汉字笔画排序源码"表明这是一个关于使用Java编程语言实现汉字笔画排序的代码...
Swift本身提供的排序功能对于英文字符集是足够的,但当涉及到中文字符时,由于Unicode编码的复杂性,直接使用默认的排序方法可能无法得到预期的结果。中文字符的排序需要考虑到汉字的拼音、笔画或者字典顺序。...
标签进一步明确了关键概念,包括"汉字笔画排序"、"java汉字笔画排序"、"java汉字按照笔画排序"、"汉字按照笔画排序"和"中文笔画排序"。这些标签强调了该话题的特定技术点,即使用Java语言对中文字符进行笔画计数并...
对于中文排序,我们需要比较的是字符串在中文字典中的位置,而不是它们的Unicode值。以下是一个简单的比较函数示例: ```javascript function compareChinese(a, b) { return a.localeCompare(b, 'zh-Hans-CN', { ...