2

PrimeFaces 2.2 (Java EE 5 プロジェクトで JSF 2.x を使用) を使用しており、使用しているにもかかわらず、PrimeFaces dataTables で特殊文字 (イスタンブール、Çankaya、Ödemiş... など) で始まる文字列を正しくソートするのに問題があります。 UTF-8。

問題は、特殊文字で始まる単語が Z で始まる単語の末尾に配置されることです。たとえば、「İ」で始まる都市名 (つまり、イスタンブール) は、通常、イビサとジャクソンビルの間に表示され、末尾ではなく表示されます。チューリッヒの後に現れます。このルールは、トルコ語 (tr_TR) ロケールに基づいています。

ただし、selectOneMenus では、並べ替えが正しく実行されます (上記のように)。

回避策の提案をいただければ幸いです。

_ 編集 _

この問題は、SQL ベースのソートではなく、休止状態 (hsql) ベースのソートに関連しています。

4

3 に答える 3

0

単語の言語の並べ替え順序を知っていないと、正しく並べ替えることができません。また、単語が混合言語である場合、正しい並べ替え順序はありませんが、その場合、通常、大多数のユーザー/聴衆に対して言語の並べ替え順序が使用されます。

まったく同じ音とまったく同じ Unicode コード ポイントを持つまったく同じ文字は、言語や国によって異なる場所に並べ替えられます。

Unicode 照合アルゴリズムの定義は次のとおりですhttp://unicode.org/reports/tr10/

于 2012-07-20T08:48:38.123 に答える
0

これは少し役立つはずです。ここでは、並べ替えの前にすべてが基本的な大文字/小文字の文字に変換されます

select k from test order by convert(k using utf8_bin)
于 2012-07-20T07:56:47.560 に答える
0

ロケールを意識した照合はトリッキーな作業であるため、おそらく専用のライブラリを使用するのが最善です。ICUを使用することをお勧めします。それを hsql ワークフローと統合する方法について詳しく説明することはできません。

于 2012-07-20T11:45:56.647 に答える