Html电子邮件正文中的希伯来语不可读

时间:2012-11-13 10:24:12

标签: c# encoding

我正在尝试解析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      

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

我如何转换为希伯来字符?

非常感谢, ELAD

1 个答案:

答案 0 :(得分: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..实际上是在开头使用=而不是%进行URLE编码。所以我们替换有问题的字符和UrlDecode它。

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

作为旁注:您提供的示例字符串中存在问题:=F4= =E5=EF实际上应该是=F4 =E5=EF=字符始终在之前,而不是在解码部分之后)

我测试了它,它在你的字符串上工作正常...בהצלחה