3


1

国際的なアプリケーションの正しいテキスト比較方法は…​ AnsiCompareTextまたはCompareText?

Delphi 2009を使用して、Accessデータベースを使用するアプリを作成しています。

私は、MS AccessのORDER BYがAnsiCompareTextのような国際的な文字セットをソートしているように見えたのに対し、アプリ全体で `SysUtils.CompareText`を使用していることに気付きました。

Access' (Jet's) ORDER BY results (delphi AnsiCompareText( ) is the same)
  Nørmork
  Öster
  RAM

delphi CompareText( )
  Nørmork
  RAM
  Öster

比較に使用すべき正しい呼び出しはどれですか?

注:ロケールとして米国英語を使用しています。

申し訳ありませんが、これについてはあまり知りません。 関連するトピックを詳細に議論する多くのWebサイトがありますが、どれが最も適切かについての議論は見ていません。

ありがとうございました!

2 Answer


9


CompareTextはASCII比較を行いますが、AnsiCompareTextはANSIコードページ(またはDelphi 2009+ではUnicodeテーブル)を使用して文字を比較します。 したがって、CompareTextは、プレーンな英語テキストがある場合にのみ機能します。


2


一貫性のためだけに、正しい比較はデータベースと同じ結果をもたらすものであるように思えます。 AnsiCompareTextを使用すると、結果の不一致を心配する必要がなくなります。