Go 解析电子邮件主题标题

Go 解析电子邮件主题标题,go,encoding,mime,Go,Encoding,Mime,我正在使用net/mail阅读Go的电子邮件: msg, _ := mail.ReadMessage(f) subject := msg.Header.Get("Subject") fmt.Printf("Subject = %v", subject) 当主题具有特殊字符,邮件提供商将其从纯文本转换为编码文本时,我很难理解如何解码主题 例如,如果发送一封电子邮件时附带了一个测试-注意,这是一个正确的卷曲引号-那么该主题最终会被UTF-8编码,我认为是十六进制值,编码为: =?UTF-8?Q?I

我正在使用net/mail阅读Go的电子邮件:

msg, _ := mail.ReadMessage(f)
subject := msg.Header.Get("Subject")
fmt.Printf("Subject = %v", subject)
当主题具有特殊字符,邮件提供商将其从纯文本转换为编码文本时,我很难理解如何解码主题

例如,如果发送一封电子邮件时附带了一个测试-注意,这是一个正确的卷曲引号-那么该主题最终会被UTF-8编码,我认为是十六进制值,编码为:

=?UTF-8?Q?It=E2=80=99s\U测试=

我的问题是:

用于描述这里正在进行的编码的正确术语是什么

我将使用哪个库来解码上面的字符串=?UTF-8?Q?It=E2=80=99s\u a\u test?=在我需要做的事情之前返回到它的测试中显示它,将它放入数据库中,等等


通过搜索golang=?UTF-8?Q找到答案?并查看Go的mime包中可用的函数


通过搜索golang=?UTF-8?Q找到答案?并查看Go的mime包中可用的函数


你的问题与围棋没有什么关系,但与处理电子邮件的RFC有很多关系。我去掉了utf-8标签,用mime代替了它,因为主题的真正编码是所谓的Q编码,也有B编码;格式的UTF-8位定义了根据Q或B编码解码后应解释的编码实际字节。你的问题与Go无关,但与处理电子邮件的RFC有关。我已删除UTF-8标记,并用mime替换它,因为主题的真正编码是所谓的Q编码也有B编码;该格式的UTF-8位定义了在从该Q或B编码解码后,应根据哪个编码解释实际字节。