какой метод сравнения текста является правильным для международной заявки ... 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
Какой правильный вызов я должен использовать для сравнения?
Примечание: я использую английский язык США в качестве своего языка.
Извини, я не так уж много об этом знаю. Есть много веб-сайтов, которые подробно обсуждают связанные темы, но я этого не делал. видели дискуссию о том, какая из них наиболее уместна.
Спасибо!
2 ответов:
CompareText выполняет сравнение ASCII, в то время как AnsiCompareText использует кодовую страницу ANSI (или в Delphi 2009+ таблицу unicode) для сравнения символов. Поэтому CompareText работает только в том случае, если у вас есть простой английский текст.
Мне кажется, что правильное сравнение-это то, которое дает те же результаты, что и ваша база данных, хотя бы ради согласованности. Используйте AnsiCompareText, и тогда вам не придется беспокоиться о несоответствии результатов.
Comments