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

我尝试将其从十六进制转换为字符串,但结果并不完美。有些词不见了。

如何将 is 转换为希伯来字符?

非常感谢,埃拉德

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);

您的问题的第一部分=F0=E0..是实际上 URLEncoded 是用 a=而不是 a%开始的。所以我们替换有问题的字符并UrlDecode

之后,我们将其从Windows-1252编码转换为Windows-1255编码。

附带说明:您给出的示例字符串存在问题:=F4= =E5=EF实际上应该是=F4 =E5=EF=字符始终在解码部分之前,而不是在解码部分之后)

我对其进行了测试,它在您的字符串上运行良好...... בהצלחה

于 2012-11-13T12:32:10.437 回答