件名がすべてのブラウザーで正しく読み取れるように、電子メールのヘブライ語で書かれた「件名」フィールドを Base64 にエンコードしようとしています。現時点では、Windows-1255 のエンコーディングを使用していますが、これは一部のクライアントでは機能しますが、すべてのクライアントでは機能しないため、utf-8、base64 を使用したいと考えています。
この件に関する私の読書(しゃれは意図されていません)は、テキストが次の形式でなければならないことを示しています
=?<charset>?<encoding>?<encoded text>?=
例えば
=?windows-1255?Q?=E0=E1?=
UTF-8B エンコーディングでヘブライ語で送信された手紙からエンコードされた件名を取得し、この Web サイト www.webatic.com/run/convert/base64.php で正常にデコードしました。また、この Web サイトを使用して単純な文字をエンコードしましたが、返されるエンコードがDelphi アルゴリズムから取得した結果と同じではないことに気付きました。
だから - aleph (ord=224)、bet (ord=225) などの文字を正常にエンコードするアルゴリズムを探しています。ウェブサイトによると、2 つの文字 aleph と bet で構成される文字列はコード 15DXkq= を返します。 = ですが、基本的な Delphi アルゴリズムは Ue4 を返し、TIdEncoderQuotedPrintable コンポーネントは =E0=E1 (ISO-8859 エンコーディング) を返します。
編集(いくつかのコメントの後):
私は友人に、彼女の Mac コンピュータから電子メールを送ってくれるように頼んだ. 件名は 1 文字の aleph、ord 224 でした。エンコードされた件名は、次のように電子メールのヘッダーに表示されました。
=?UTF-8?B?15A=?=
これは 3 つの部分に分けることができます。「プレフィックス」(=?UTF-8?B?) は、base64 エンコーディングの UTF-8 が使用されていることを意味します。「ペイロード」(15A=)。私が引用した Web サイトでは、これを文字アレフとして正しく翻訳しています。およびサフィックス (?=)。
任意の文字列を変換するアルゴリズムが必要です。そのほとんどはヘブライ語 (したがって ord >= 224) で、base64/utf-8 に変換されます。正しい解決策は、引用された Web サイトで正しくデコードされるものです。