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