2013-01-22 41 views
3

整理/爲了我在Android的SQLite表以下項目(表選項卡有1列 - 「名稱」文本)的Android SQLite的由UTF8

Beta 
Work 
Úpal 
User 

如果我有一個排序規則斯洛伐克在SQL Server中這些項目語言,select * from tab order by name,它正確地輸出項目分類爲:

Beta 
User 
Úpal 
Work 

在斯洛伐克語,U與口音 - U應當U.

後排序

在SQLite的Android上,它鷗tputs他們在這個順序:

Beta 
User 
Work 
Úpal 

我明白這是怎麼回事,SQLite是比較可能使用的字符代碼的字符,而U爲W這樣了。

我可以做些什麼來使它按我的方式?它甚至有可能嗎? SQLite docs on COLLATION表示基本上所有歸類都是二進制比較的變體,並且使用memcmp()比較字符串數據,而不管文本編碼如何。

回答

1

SQLite的C API允許安裝new collation sequences。 這些功能是不是由Android的API公開,但至少安裝兩個額外的排序規則:

除了SQLite的默認BINARY和核對,Android的提供了兩個以上,LOCALIZED,這與系統當前的設置更改,並UNICODE,這是Unicode排序算法,不適合當前的語言環境。