【问题标题】:which is the correct text comparison method for an international application...AnsiCompareText or CompareText?哪个是国际应用程序的正确文本比较方法...AnsiCompareText 或 CompareText?
【发布时间】:2009-11-27 18:12:44
【问题描述】:

我正在使用 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

我应该使用哪个正确的调用进行比较?

注意:我使用美国英语作为我的语言环境。

抱歉,我对此了解不多。有许多网站详细讨论了相关主题,但我还没有看到关于哪个最合适的讨论。

谢谢!

【问题讨论】:

    标签: delphi sorting internationalization delphi-2009


    【解决方案1】:

    CompareText 进行 ASCII 比较,而 AnsiCompareText 使用 ANSI 代码页(或在 Delphi 2009+ 中使用 unicode 表)来比较字符。因此,CompareText 仅适用于纯英文文本。

    【讨论】:

    • 我认为 Ansi* 调用是针对 MBCS 而不是 unicode。
    • 从 Delphi 2009 开始,Ansi 函数是 Unicode。(自述文件没有提到吗?)函数名称的兼容性被认为比严格的逻辑函数名称更重要。另请参阅具有旧 MBCS 功能的新 AnsiStrings 单元。
    【解决方案2】:

    在我看来,正确的比较是与您的数据库给出相同结果的比较,即使只是为了保持一致性。使用 AnsiCompareText,您就不必担心结果不匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      相关资源
      最近更新 更多