【发布时间】:2011-03-18 10:12:02
【问题描述】:
我正在从邮箱中提取法语电子邮件,这些电子邮件包含口音。我相信它使用的是 UTF8 编码。
我尝试了在 Internet 上找到的不同 UTF8 转换方法,但均不成功。
例如,在 C# 中,我如何将这个:Montr=C3=A9al 转换为 Montréal?
编辑:另外,它是不一致的。有时它可能就像蒙特利尔。 (和号后面的空格是刚刚添加的,所以浏览器不会转换它。)
谢谢!! 标记
【问题讨论】:
我正在从邮箱中提取法语电子邮件,这些电子邮件包含口音。我相信它使用的是 UTF8 编码。
我尝试了在 Internet 上找到的不同 UTF8 转换方法,但均不成功。
例如,在 C# 中,我如何将这个:Montr=C3=A9al 转换为 Montréal?
编辑:另外,它是不一致的。有时它可能就像蒙特利尔。 (和号后面的空格是刚刚添加的,所以浏览器不会转换它。)
谢谢!! 标记
【问题讨论】:
那不是 UTF-8。那是quoted printable,它与 UTF-8 的编码类型完全不同——它更像是一种“ASCII 文本到 Unicode 文本”编码。
引用的可打印文件将有效地让您将 ASCII 消息转换为字节数组,然后可以将其解码为 UTF-8。
我不确定 .NET 中是否直接支持引用的可打印编码,这有点奇怪……我很可能错过了一些东西。
【讨论】:
UTF-8 编码将字节数组(8 位数字)转换为字符串(反之亦然)。 IE。 “数字”和“字符”之间存在映射。字符集大于 ASCII 字符集,例如 é 是 UTF-8 的一部分,但不是 ASCII 的一部分。
Quoted-Prinable 编码将字节数组(8 位数字)转换为 ASCII 字符序列(实际上是它的子集)。
因此,结合两者,您可以将 UTF-8 字符串“编码”为 ASCII 字符(ASCII 字符串)的(子集)序列。
其他编码也可以做到这一点(例如 ISO-8859-1)。因此,您需要同时拥有这两个信息:
解码quoted-printable因此有两个步骤:
通过引用的可打印规则创建字节数组,例如 bytes[],即
然后将字节数组解释为 UTF-8 字符串。
【讨论】: