0

言語分析を行うためにデータベースをセットアップしていますが、日本語の仮名がちょっと面倒です。

これまでの他の質問とは異なり、それ自体がエンコーディングの問題であることはわかりません。連携を に設定しましutf8_unicode_ciた。表面的には、ほとんどのものを正常に保存および呼び出しています。

しかし、問題は、キ (ki) やギ (gi) などの関連する仮名を使用する場合です。並べ替えの目的で、日本人は、直接衝突しない限り、2 つを区別しません。たとえば、次のようになります。

  • ぎ (gi) きかい (kikai) の前に来る
  • きる (kiru) は ぎわく (giwaku) の前に来る
  • き (ki) は ぎ (gi) の前に来る

私の問題の根底にあると思うのはこの行動です。外部ファイルからデータ セットをロードするときに、SELECT 呼び出しを実行して、日本語の特定の読み取り値がまだログに記録されていないことを確認しました。既に存在する場合は、ID をフェッチして、見出し語とペアにすることができます。それ以外の場合、新しいエントリが追加され、その後ペアリングされました。

すべてを入力した後に気付いたのは、このような類似の測定値が 2 つ発生した場合、最初に検出された測定値がログに記録され、それが表示された場合は他の測定値の誤検知として表示されるということです。例えば:

  • キョウ(きょう)が最初に登場したので、代わりにギョウ(ぎょう)の文字がキョウとペアになりました
  • ズ (zu) はス (su) の前にあるため、同様にさらに多くの文字が誤って一致しました。

必要に応じて手動で並べ替えることができますが、実際にやりたいことは、データベースをセットアップして、文字の区別に関してより厳密な見方をすることです (たとえば、文字に 2 つの異なる UTF-8 コード ポイントがある場合は、それらは異なる文字として)。この動作を取得する方法はありますか?

4

2 に答える 2

2

utf8_binUnicode コード ポイントで文字を比較する照合を取得するために使用できます。

utf8_general_ci照合もキョウとギョウを区別します。

于 2013-09-04T16:21:54.587 に答える
1

データベースに保存するときはバイナリとして保存し、コールバックするときは日本語に変更します アラビア語で私と同じ問題が発生しました

于 2013-09-04T16:18:09.293 に答える