中文字符在邮件列表中显示为问号?

时间:2016-05-01 02:02:06

标签: email mailing-list mailman

我订阅了一个邮件列表,其内容主要是中文。每次收到电子邮件时,每个中文字符都会被?替换。然后我挖到了电子邮件标题并找到了

> Content-Type: text/plain; charset="utf-8"

我认为这是问题,要解决我需要将charset更改为与中文兼容的问题。但是我在哪里改变这个?

我不认为我可以改变它,因为无论我使用哪个邮件客户端,问题都会出现。邮件列表在Python mailman上运行。

1 个答案:

答案 0 :(得分:2)

  

Content-Type:text / plain;字符集= “UTF-8”

这不是问题。

UTF-8可以显示每种语言的每个字符。实际上可能发生的事情是,有问题的网站将数据存储在真正的UTF-8数据库中,例如MySQL utf8 _ 整理和字符集{ {3}}。

如果不是数据库存储问题,则问题来自生成电子邮件时使用的字符集或数据插入电子邮件模板中的某个地方,电子邮件的来源不是 UTF-8或相应的完整中文字符集。

如:

  • HTML输入表单未设置为UTF-8(或正确的中文字符集),
  • HTML输入表单容器网页未设置为UTF-8,HTML接收表单/代码未设置为UTF-8(或正确的中文字符集),
  • 电子邮件发送者模板生成器未设置为UTF-8(或正确的中文字符集)。
  • 发送服务器,否则不使用默认的UTF-8标头。

同样,当你说“内容主要是中文”时,这并不会缩小,因为至少有五种主要中文书面语言和一系列使用相同或非常相似字符的较小语言集。

您希望使用which are not true UTF-8使用UTF-8编码构建电子邮件。 UTF-8实现unicode,在unicode中,每个字符都有一个代码点,对于所有中文字符都在0x4E00和0x9FFF(2字节)之间。

但是UTF8不会通过存储它们的代码点来编码字符(UTF32会这样做)。相反,它使用更复杂的标准,使所有中文表意文字长2或3个字节。

供参考:International Resource Identifiers(2008年问题)和Python Mailman and UTF-8 details(2009年)。 character conversion guide也是this Stackoverflow anwser