越南电子邮件主题编码?

Posted

技术标签:

【中文标题】越南电子邮件主题编码?【英文标题】:vietnamese email subject encoding? 【发布时间】:2011-07-23 13:23:15 【问题描述】:
Subject: Re:
 =?UTF-8?Q?Th=E1=BA=A7y_g=E1=BB=ADi_b=C3=A0i_t=E1=BA=ADp_cho_em_v=E1=BB?=
 =?UTF-8?Q?=9Bi.?=

我收到了一封包含此主题标题的电子邮件。应该如何解码?

【问题讨论】:

现代电子邮件客户端将透明地解码诸如此类的编码词。大多数电子邮件框架都有处理它们的机制。 【参考方案1】:

这是一个MIME encoded-word。语法为=?charset?transfer-encoding?encoded-data?=。传输编码为Base64 或Quoted-printable。

解码:

    将编码后的单词分成 3 个部分。 根据其传输编码(第二部分)将数据(第三部分)解码为byte[]。在这种情况下,使用 Q 编码,因此将 =xx 序列替换为相应的八位字节。这为您提供了两个字节数组 [84, 104, 225, 186, 167, 121, 95, 103, 225, 187, 173, 105, 95, 98, 195, 160, 105, 95, 116, 225, 186, 173, 112, 95, 99, 104, 111, 95, 101, 109, 95, 118, 225, 187] 和 [155, 105, 46]。 根据指定的编码解码这些字节数组。

在这个特定示例中,两个编码字都是无效:第一个缺少 3 字节 UTF-8 字符的尾字节,第二个以尾开头字节。但是结合,它们是有效的 UTF-8,并解码为字符串 Thầy_gửi_bài_tập_cho_em_với.(谷歌翻译为“老师让我去锻炼”。)

【讨论】:

不要忘记编码数据部分中的原始 _ 是要替换为空格字符的。 RFC 2047 中的相关位 declaring such encoded-words invalid: Each 'encoded-word' MUST represent an integral number of characters. A multi-octet character may not be split across adjacent 'encoded-word's.【参考方案2】:

这在 RFC 2047 中定义: https://www.rfc-editor.org/rfc/rfc2047

请参阅第 4 节关于编码的内容。我不确定基础框架中是否有任何东西可以正确处理/处理这个问题。

编辑:这是一个人的尝试:http://vsevolodp.blogspot.com/2010/11/how-to-decode-encoded-word-header.html

【讨论】:

这实际上是我的博客文章 :) 如果您需要一些缺少的功能,请告诉我。并随时使用此代码。 我在我们建好后找到了你的,这会为我节省一些工作!感谢您将这样的代码放在网络上,假设可以借用。

以上是关于越南电子邮件主题编码?的主要内容,如果未能解决你的问题,请参考以下文章

带有收件人、主题和正文的 QR 编码电子邮件?

SmtpClient/MailMessage 上的主题编码

解析电子邮件主题标头

电子邮件主题中的动画图标

使用 codeigniter 电子邮件库的主题 > 75 个字符时格式错误的电子邮件主题标头

如何解码收到的电子邮件主题行的UTF8字符集[重复]