是否有按非英语字母排序的标准方法?例如,罗马尼亚字母是"aăâc......"

Bac*_*cai 5 python sorting standards non-english alphabetical

可能重复:
如何在Python中按字母顺序对unicode字符串进行排序?

作为世界其他地区的公民,我对计算机默认不适应国际问题这一事实感到非常恼火.许多网站仍然不使用Unicode,PHP仍处于黑暗时代.

当我想用罗马尼亚语对单词或名字进行排序时,我总是要编写自己的函数,这些函数几乎没有效率.必须有一些区域设置使排序函数服从指定语言的字母顺序,对吗?

我主要对Python,Java和JavaScript感兴趣.

编辑:正如Chris Morgan所指出的,我在这里找到了我的Python答案.

utd*_*mir 5

在Python中,您始终可以使用带有键参数的已排序函数.例如,在土耳其语中,我们有'ç','ı','ş'等字母.如果我想根据那个字母排序,我会使用一个字符串排序的字符串,并根据字符串排序这个,像这样:

>>> letters="abcçdefg?h?ijklmnoöprs?tuüvyz" #Turkish alphabet
>>> sorted("açobzö?ge")
['a', 'b', 'e', 'g', 'o', 'z', 'ç', 'ö', '?'] #Python's default
>>> sorted("açobzö?ge", key=lambda i: letters.index(i))
['a', 'b', 'ç', 'e', 'g', '?', 'o', 'ö', 'z'] #With key parameter
Run Code Online (Sandbox Code Playgroud)

注意:使用Python 3; 处理Unicode更容易.

编辑,正如评论所说,如果我们使用字典,这个过程会更有效:

>>> letters="abcçdefg?h?ijklmnoöprs?tuüvyz"
>>> d={i:letters.index(i) for i in letters}
>>> sorted("açobzö?ge", key=d.get)
['a', 'b', 'ç', 'e', 'g', '?', 'o', 'ö', 'z']
Run Code Online (Sandbox Code Playgroud)