3

AndroidのSQLiteテーブルに次の項目があります(テーブルタブには1列-「名前」テキストがあります)

Beta
Work
Úpal
User

スロバキア語の照合を使用して SQL Server にこれらの項目がある場合、次のようにselect * from tab order by name並べ替えられた項目が正しく出力されます。

Beta
User
Úpal
Work

スロバキア語では、アクセント付きの U - Ú は、U の後にソートする必要があります。

Android の SQLite では、次の順序で出力されます。

Beta
User
Work
Úpal

私は何が起こっているのか理解しています.SQLiteはおそらく文字コードを使用して文字を比較しており、ÚはそのようにWの後にあります.

それを自分のやり方で並べ替えるにはどうすればよいですか?それは可能ですか? COLLATION に関する SQLite ドキュメントでは、基本的にすべての照合はバイナリ比較の変形であり、テキスト エンコーディングに関係なく、memcmp() を使用して文字列データを比較すると述べています。

4

1 に答える 1

1

SQLiteのCAPIを使用すると、新しい照合シーケンスをインストールできます。これらの関数はAndroidAPIによって公開されませんが、少なくとも2つの追加の照合がインストールされます。

SQLiteのデフォルトのBINARY照合機能に加えて、Androidはさらに2つを提供します。これはLOCALIZED、システムの現在のロケールに応じて変化しますUNICODE。これは、Unicode照合アルゴリズムであり、現在のロケールに合わせて調整されていません。

于 2013-01-22T21:58:37.437 に答える