我正在尝试解析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
答案 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
(=
字符始终在之前,而不是在解码部分之后)
我测试了它,它在你的字符串上工作正常...בהצלחה