我的情况是:
- 在 Outlook Express 中创建电子邮件并将其保存为 .eml 文件;
- 在 C# 控制台应用程序中将文件作为字符串读取;
我正在保存以 utf-8 编码的 .eml 文件。我写的一个例子是:
- 'Goiâniaé badalação'。
有像âéçã这样的特殊字符。它是葡萄牙语字符。当我用记事本++打开文件时,文本显示如下:
- 'Goi=C3=A2nia =C3=A9 badala=C3=A7=C3=A3o.'
如果我再次在outook express打开它,它显示正常,就像第一种方式一样。当我在控制台应用程序中读取文件时,使用 utf-8 解码,字符串显示为第二种方式。
我使用的代码是:
string text = File.ReadAllText(@"C:\fromOutlook.eml", Encoding.UTF8);
Console.WriteLine(text);
我尝试了所有的编码选项和很多我在网上找到的方法,但没有任何效果。有人可以帮我做这个简单的转换吗?
'Goi=C3=A2nia =C3=A9 badala=C3=A7=C3=A3o.' 到“Goiânia é badalação”。
string text = "Goi=C3=A2nia =C3=A9 badala=C3=A7=C3=A3o.";
byte[] bytes = new byte[text.Length * sizeof(char)];
System.Buffer.BlockCopy(text.ToCharArray(), 0, bytes, 0, bytes.Encoding.UTF8.GetString(bytes, 0, bytes.Length);
char[] chars = new char[bytes.Length / sizeof(char)];
System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
Console.WriteLine(new string(chars));
在这个 utf-8 表中,您可以看到十六进制。这些字符的值,'é' == 'c3 a9': http ://www.utf8-chartable.de/
谢谢。