WideString は UTF-16 実装 (COM BSTR 互換のもの) であり、UTF-8 文字列を格納できません。8 ビット文字列を割り当てると、UTF-16 に変換されます。ただし、適切な変換関数を明示的に使用しない限り、Delphi は現在のコードページを使用して 8 ビット文字列を解釈します。
UTF-8 文字列は Delphi AnsiString(Delphi 7 のデフォルトの文字列型)に格納できますが、文字列操作関数は UTF-8 ではなく ANSI コードページ用に設計されています。違いは、UTF-8 がマルチバイト文字セットであることです。ただし、最初の 127 個の ANSI 文字は、特定の「文字」をエンコードするために 1 バイト以上が必要ですが、多くの ANSI コードページ (特にヨーロッパ言語用のもの) は 1 バイトしか必要とせず、255 個の「文字」のみをエンコードします (一方、UTF-8 はエンコードできます)。 Unicode セット全体)。
タブ文字を探しているだけの場合は、単純に AnsiString を使用できますが、探す必要のある $80 を超えるバイトがマルチバイト シーケンスの一部ではないことを確認する必要があります。より複雑な処理が必要な場合は、UTF-8 よりも UTF-16 文字列で動作するライブラリを見つける方が簡単かもしれません。Rob Kennedy が言ったように、JCL は UTF 文字列操作を実装する無料のライブラリとして良い出発点です。