mt2503 在电话薄排序时,将英文条目放到其他语言后面,现在英文是排在最前面
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
由于英文的UCS2编码是最小的,所以在以UCS2编码大小为排序条件时,英文总是排在前面;电话簿中姓名就是使用
UCS2编码的大小排序;当需要将某种语言排序显示到英文前面时,就需要修改比较的编码;
[SOLUTION]
英文的UCS2编码范围是0x0000~0x007f;
只要将英文的编码加上某种语言编码的最大值,某种语言排序时就可以排到英文的前面;
在09A上的实现将俄文排序在英文前面:
在MMI_phb_compare_chars中添加以下的代码:
U16char1_upper=mmi_phb_char_towupper(char1);
U16char2_upper=mmi_phb_char_towupper(char2);
//。addcodehere。
if(char1>=0x0000&&char1<=0x007f)
{
char1=char1_upper+0xf800;
}
if(char2>=0x0000&&char2<=0x007f)
{
char2=char2_upper+0xf800;
}
//。addcodehere。
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
/*tryUCS2matching*/
if(char1==char2||char1_upper==char2_upper)
{
return0;
}
......
在09B和10A中,在srv_phb_compare_wchar中做相同的修改即可
由于英文的UCS2编码是最小的,所以在以UCS2编码大小为排序条件时,英文总是排在前面;电话簿中姓名就是使用
UCS2编码的大小排序;当需要将某种语言排序显示到英文前面时,就需要修改比较的编码;
[SOLUTION]
英文的UCS2编码范围是0x0000~0x007f;
只要将英文的编码加上某种语言编码的最大值,某种语言排序时就可以排到英文的前面;
在09A上的实现将俄文排序在英文前面:
在MMI_phb_compare_chars中添加以下的代码:
U16char1_upper=mmi_phb_char_towupper(char1);
U16char2_upper=mmi_phb_char_towupper(char2);
//。addcodehere。
if(char1>=0x0000&&char1<=0x007f)
{
char1=char1_upper+0xf800;
}
if(char2>=0x0000&&char2<=0x007f)
{
char2=char2_upper+0xf800;
}
//。addcodehere。
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
/*tryUCS2matching*/
if(char1==char2||char1_upper==char2_upper)
{
return0;
}
......
在09B和10A中,在srv_phb_compare_wchar中做相同的修改即可
顶顶顶
66666
UCS2编码,注意规则
某种语言编码的值越大,排名越靠前?
谢谢分享