參考資料 ----
這是個山不轉路轉的作法 😝
繁體中文習慣以 BIG5 排序,但 SQLite 的 ORDER BY 是依 UTF8 排序,既然如此,那我們就轉個彎,在資料表內新增一個欄位,存放 BIG5 內碼,當需要排序時,就 ORDER BY 這個 BIG5 內碼欄位。
例如:
我們有個資料表,存放考試科目,則建立 2 個欄位 exname(考試科目名稱)、exbig5,當新增一筆記錄時,就查出 exname 的中文 BIG5 內碼 並存入 exbig5;當需要排序時,就 ORDER BY exbig5。
先產生中文字的 BIG5 內碼表(參考底下的相關筆記)
將內碼表置於 /專案目錄/asset/ 下
以 MAP 讀入內碼表(這屬於耗時的工作,應交由 Thread、AsyncTask 或 Coroutine 執行)
新增儲存記錄時,查詢 exname 內(逐字)的 BIG5 內碼,所得到的字串存入 exbig5。
之後的查詢,若需要排序 exname 時,就改排序 exbig5。
相關筆記 ----
沒有留言:
張貼留言