我有一些代码,按对象属性排序表列。我想到在日文或中文(非字母语言)中,发送到排序函数的字符串将按照字母语言的方式进行比较。排序在非字母(即亚洲)语言中的含义是什么?
就拿日本姓氏列表:
寿拘 (Suzuki)
松坂 (Matsuzaka)
松井 (Matsui)
山田 (Yamada)
藤本 (Fujimoto)
当我梳理通过Javascript上面的列表中,其结果是:
寿拘 (Suzuki)
山田 (Yamada)
松井 (Matsui)
松坂 (Matsuzaka)
藤本 (Fujimoto)
这是从日本syllabary的顺序不同,这将安排列表发音发音(日本词典会的方式):
寿拘 (Suzuki)
藤本 (Fujimoto)
松井 (Matsui)
松坂 (Matsuzaka)
山田 (Yamada)
我想知道的是:
- 难道一个双字节字符真正得到对等的排序功能相比?
- 这种情况究竟发生了什么?
- (额外信贷)这样的结果是否意味着什么?分类的概念是否真的可以在亚洲(和其他)语言中使用?如果是这样,它是什么意思,以及在为这些语言创建比较函数时应该争取什么?
附录总结解答并得出结论:
首先,感谢所有谁的讨论作出了贡献。这是非常丰富和有益的。特别喊话到bobince,烈瑞安,浓汤,杰弗里郑,并拉里ķ,他们深入周到的分析。我授予拉里克复选标记为我指出我的问题未能预见的解决方案,但我上调了每个我认为有用的答案。
的共识似乎是:
中国和日本的字符串由Unicode码位排序,其顺序可以对可能在某些方面的理由为前提理解知识渊博的读者,但在帮助用户找到他们正在寻找的信息方面不太可能有实际价值。
要进行语义或语音排序所需的比较函数的种类太过于繁琐而不能考虑追求,特别是因为结果可能不尽人意,并且在任何情况下比较算法都会有每种语言都要更改。最好只是允许排序进行,甚至不尝试比较功能。
我可能在这里问错了问题。也就是说,我在考虑太多的“盒子内部”而没有考虑到真正的问题不在于如何使这些语言中的排序有用,而是如何为用户提供查找列表中项目的有用方式。西方人自动为此考虑分类,我对此感到愧疚。 Larry K向我指出了一篇维基百科文章,建议过滤功能可能对亚洲读者更有用。这是我计划追求的目标,因为它至少与排序,客户端一样快。我会保留列的排序方式,因为它在西方语言中很好理解,并且因为任何语言的演讲者都会发现对日期和其他基于数字的数据类型的排序很有用。但是我还会添加这种过滤机制,这对于任何语言的长列表都很有用。
+1我觉得这非常有趣 – 2010-09-21 21:01:48