微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android联系人:不正确的本地化排序/排序

这是我的问题:我正在编写一个替代联系人应用程序,指定可以使用很多不同的语言和字母表.使用我自己的语言瑞典语查询名称时,使用变音字符的名称以不合逻辑的方式排序给我,但我认为unicode符合逻辑:

应该是/瑞典风格:A,B,C,……,Z,Å,Ä,Ö.

查询结果:A,Å,Ä,B,…,N,O,Ö,P,……

我认为这将是任何偏离拉丁字母的语言中的问题.我所做的所有测试都在模拟器上.我的开发小组正在对框架进行更改,因此也欢迎低级别的答案.

Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
       ContactsContract.Contacts._ID,
       ContactsContract.Contacts.disPLAY_NAME,
       ContactsContract.Contacts.PHOTO_ID
       };
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
String sortOrder = ContactsContract.Contacts.disPLAY_NAME + " COLLATE LOCALIZED ASC";
mCursor = managedQuery(uri, projection, null, null, sortOrder);

更新:我们正在调查此曲目:Sort a String array,TBC …
我还在Google Code上将其添加为问题.

解决方法:

Gaah.它似乎是这样的:

在vanilla Java(SE-1.6)中运行以下代码生成所需的输出

String strings[] = {"Åke", "Äskil", "otto", "Adam", "Örjan", "Palle", "Nisse"};
Locale locale = new Locale("sv", "SE");
Collator collator = java.text.Collator.getInstance(locale);
java.util.Arrays.sort(strings, collator);

但Android中的相同代码对我不起作用.

编辑:我在Android Google Code网站上创建了一个issue,它已被评论评论过.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐