我正在使用Phonegap爲iOS創建字典應用程序。SQLite命令通過在末尾放置變音符號和特殊字符
當查詢按字母順序排列的數據庫中,我使用COLLATE NOCASE
:
ORDER BY term COLLATE NOCASE ASC
這解決了開頭小寫字母,其中追加到末尾方面的問題(把它撿起來,從that question)。
但是非標字符öäüéêè仍然可以在最後〜這裏整理2個例子:
Expected: Öffnungszeiten Oberved: Zuzahlung
Zuzahlung Öffnungszeiten
(or) clé cliquer sur
cliquer sur clé
我環顧四周,發現了類似的問題討論here或here但似乎一般的建議是安裝一些
這個擴展或許可以幫你......
...擴展的類型使用ICU無論是作爲一個擴展
SQLite支持與ICU集成...
但我不知道這是否適用於我的情況下數據庫不是由自己主持,但客戶的設備上運行。所以我想我會推出這個擴展w /我的應用程序包。
我對iOS不是很熟悉,但我的感覺會很複雜 - 至少。
此外,在the official forum我發現提示:
SQLite does not properly handle accented characters.
一點點在文本下來海報中提到的錯誤SQLite中。
所有的鏈接,我發現還沒有爲> = 1年,他們的非活躍似乎對付我目前在開發的移動環境。
所以我想知道是否有人找到了解決方案在他們的iOS項目。
的文檔指出他們只有3個默認排序選項:
6.0排序序列
當的SQLite比較兩個字符串,它使用一個相同的整理順序或 整理功能(兩句話東西)來確定哪個 字符串更大或兩個字符串是否相等。 SQLite有三個 內置的整理函數:BINARY,NOCASE和RTRIM。
BINARY - Compares string data using memcmp(), regardless of text encoding. NOCASE - The same as binary, except the 26 upper case characters of ASCII are folded to their lower case equivalents before the
進行比較。請注意,只有ASCII字符是摺疊的情況下 。由於所需表的大小爲 ,SQLite不會嘗試執行完整的UTF大小寫摺疊。 RTRIM - 與二進制相同,但忽略尾隨空格字符。
現在我最好的猜測是在JavaScript中進行排序,但我懷疑這對整體性能沒有什麼好處。
如何編譯SQLite到你的應用程序?你知道ICU是否包含在合併中?' – 2013-02-13 11:23:50