在VB.NET中将UTF-8转换为ASCII

3
我正在编写一个控制台应用程序,它从不同的电子邮件信箱中读取邮件并对其进行处理。这些邮件来自各种自动化系统。邮件消息被记录和/或转发。
问题在于,一些电子邮件以UTF-8编码并通过quoted-printable进行传输,导致特殊字符(主要是ä、ö和å)出现问题。我还没有找到将它们转换为可读格式的解决方案。
例如,在quoted-printable中,“ä”是“=C3=A4”。使用普通的转换方法,结果是“ä”(无意义的字符)。
我无耻地从这里http://forums.sun.com/thread.jspa?threadID=5315363偷了这个示例转换表。
字符   代码点             UTF-8编码                    拉丁-1编码
ä 11100100 = E4 11000011 10100100 = C3 A4 ä = \u00C3\u00A4 å 11100101 = E5 11000011 10100101 = C3 A5 Ã¥ = \u00C3\u00A5 ö 11110110 = F6 11000011 10110110 = C3 B6 ö = \u00C3\u00B6
Ä 11000100 = C4 11000011 10000100 = C3 84 Ã? = \u00C3\u0084 Å 11000101 = C5 11000011 10000101 = C3 85 Ã? = \u00C3\u0085 Ö 11010110 = D6 11000011 10010110 = C3 96 Ã? = \u00C3\u0096

如何从UTF-8值获取真实代码点?我不想使用任何外部库。此外,我已经尝试过几个库但它们都失败了。

3个回答

8
我不是完全确定,但这可能会起作用:
Encoding.ASCII.GetString(Encoding.UTF8.GetBytes(yourString))

我现在不在电脑旁边,所以无法测试,但稍后会尝试。


你会得到一个ASCII字符串,其中的“奇怪”字符将被替换为?? - Ivan Ferrer Villa

1

0

从您所描述的影响来看,我猜想您是通过直接连接到POP3邮箱获取电子邮件的?如果是这样的话,那么您将以它们的原始形式获取电子邮件,而且这些邮件大多数可能都采用MIME格式。

MIME(维基百科有一个很好的概述)是一个相当庞大和复杂的标准,实现一个可靠地处理所有您想要涵盖的情况的MIME解析器可能需要您花费几个星期的时间。

因此,我建议您考虑使用第三方的MIME库来完成这项工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接