我从邮箱中提取法语电子邮件,电子邮件中包含重音符号。我相信它使用的是UTF8编码。
我尝试过在互联网上找到的不同的UTF8转换方法,但都没有成功。
例如,在C#中,如何转换它:Montr = C3 = A9al到Montréal?
编辑:此外,它不一致。有时它可能像Montr& eacute;人(仅在添加&符之后的空格,因此浏览器不会转换它。)
谢谢! 标记
答案 0 :(得分:3)
那不是UTF-8。那是quoted printable,它与UTF-8的编码方式不同 - 它更像是“Unicode文本到Unicode文本”编码。
带引号的printable将有效地允许您将ASCII消息转换为字节数组,然后然后将被解码为UTF-8。
我不确定在引用可打印编码的.NET中是否有任何直接支持,这有点奇怪......我可能错过了一些东西。
答案 1 :(得分:2)
UTF-8编码将字节数组(8位数字)转换为字符串(反之亦然)。即“数字”和“字符”之间存在映射。字符集大于ASCII字符集,例如é是UTF-8的一部分,但不是ASCII的一部分。
Quoted-Prinable编码将一个字节数组(8位数字)转换为ASCII字符序列(实际上是它的一个子集)。
因此,结合两者,您可以将UTF-8字符串“编码”为ASCII字符(子集)的一个子集(ASCII字符串)。
其他编码也可以这样做(例如ISO-8859-1)。因此,您需要同时拥有这两个信息:
解码quoted-printable因此有两个步骤:
通过引用的可打印规则创建字节数组say bytes [],即
然后将字节数组解释为UTF-8字符串。