0

Gmailのメールを解析しようとしています。私はImapメソッドを使用しており、これまでのところ非常に優れています。私の問題はhtmlメールにあります。HTML本文をプレーンテキストに変換するためにどこでも検索しましたが、何も機能しないので、自分でやろうとしています。私はhtmlを取得し、すべての属性をクリアしていますが、エンコードの問題が発生しています。私の電子メールのいくつかはヘブライ語であり、htmlのヘブライ語は次のようになります:

= F0 = E0 = F6 = F8 = E5 = E0 = E9 = FA = E9 = F7 = F9 = F8 = E1 = E1 = F7 = F9 = E4 = E1 = E8 = EC = F4 = = E5 = EF

16進数から文字列に変換しようとしましたが、結果は完全ではありませんでした。いくつかの単語が欠落していました。

どうすればヘブライ語の文字に変換できますか?

どうもありがとう、エラッド

4

1 に答える 1

1

受け取った HTML にエンコードの問題があるようです。正しいエンコーディングに変換する必要があります。

これは機能します:

        Encoding latinEncoding = Encoding.GetEncoding("Windows-1252");
        Encoding hebrewEncoding = Encoding.GetEncoding("Windows-1255");

        string msys = "=F0=E0 =F6=F8=E5 =E0=E9=FA=E9 =F7=F9=F8 =E1=E1=F7=F9=E4 =E1=E8=EC=F4=E5=EF";
        msys = System.Web.HttpUtility.UrlDecode(msys.Replace('=', '%').Replace(" ", "%20"), latinEncoding);

        byte[] latinBytes = latinEncoding.GetBytes(msys);
        string hebrewString = hebrewEncoding.GetString(latinBytes);

問題の最初の部分は、実際には先頭に aではなく aで=F0=E0..URLEncoded されていることです。そこで、問題のある文字を置き換えてUrlDecodeします。=%

Windows-1252その後、エンコーディングからエンコーディングに変換しWindows-1255ます。

補足として、あなたが与えた例の文字列には問題があります:=F4= =E5=EF実際にはそうあるべきです=F4 =E5=EF=文字はデコードされた部分の後ではなく、常に前にあります)

私はそれをテストし、あなたの文字列でうまく動作します... בהצלחה

于 2012-11-13T12:32:10.437 に答える