Ansi 文字列に切り捨てるのではなく、Indy が Utf-8 文字列を返すようにするために特定の方法で設定する必要があるコンパイラ ディレクティブまたはプリプロセッサ コマンドはありますか? 私が取り組んでいるプロジェクトには、問題があれば、あらゆる種類の Delphi モード フラグがあります。
件名行を直接 UTF-8 文字列 (以下のように) に設定すると、GUI 上で正しく表示されるため、utf-8 サポートが正しく設定され、適切なフォントとすべての優れた機能を使用しています。このコードでは、わかりやすくするために、サブジェクトは Utf8String として宣言されています。
MailItem.Subject := 'îņŢëŕŃïóЙǟŁ ŜũƥĵεϿד'; //Displays correctly
ただし、ヘッダーから同じ件名を取り出し、Indy を使用してデコードすると、すべての国際文字が正確に 1 つの疑問符 (本来あるべき文字数) に置き換えられます。UTF-8 を ANSI に変換しているように見えますが、これは私が望んでいるものではありません。
MailItem.Subject := IdCoderHeader.DecodeHeader('=?utf-8?B?w67FhsWiw6vFlcWDw6/Ds9CZx5/FgSDFnMWpxqXEtc61z7/Xkw==?='); //Displays '?????????? ???????'
では、何が問題になっている可能性があり、どのように修正できますか?
私は Indy の Web サイトから入手した最新バージョンの Indy10 と Windows で Lazarus 1.0 を使用しているため、これは「ソフトウェアの更新が必要」というバグではなく、おそらく何らかの構成の問題だと思います。