[Ubuntu-zh] 邮件列表的礼仪

Jiahua Huang jhuangjiahua在gmail.com
星期一 一月 31 10:59:22 UTC 2011


在别的邮件列表中,要求“使用 utf8” 有两种不同意思,

第二种意思跟某些列表说的“纯文本”是一回事

1. 就是原始文字的编码,
这个在 Gmail 设置里选取“Use Unicode (UTF-8) encoding for outgoing messages“ 或
”一律使用 Unicode(UTF-8)“类似字样就可以了

这个其实平时问题不大(只要别碰上将 GB18030 也声称为 GB2312 的国产破旧邮件服务导致丢字)
常见的客户端除了 evolution 都能很好处理 UTF-8、GB18030 等不同编码的中文邮件。

不过有些邮件列表所用的 mailman 会把 GB18030/GB2312 编码的中文邮件弄乱码


2. 也可能指的是非 ASCII 字符的编码方式,
Mutt 是直接发送 UTF-8 字符串(另一种意思的“纯文本”)
不过因为网上还有许多邮件服务器只支持传递纯 ASCII 信息(只允许 7bits 的英文字母数字这些,不允许其他字符如中文),
于是 Outlook、Gmail 等主流客户端会试图把新建里的非 ASCII 字符(比如中文)都编码为纯 ASCII 编码(英文字母数字这些),
如采用 quoted-printable 或 Base64 编码
常见的策略是,如果文字里大部分都是英文,那就用 quoted-printable,如果中文较多,则使用 Base64

比如你写了一封邮件内文是:
“Hello, 这是一封中文 Email~“

在 Mutt 里会直接把这个 UTF-8 字符串贴到 mail 格式里,
这在多数情况下没问题,但是如果你这封邮件投递转发过程中遇到有旧的 Email 服务器,
就会被破坏掉(只支持 7bits 的服务器会把第 8bit 丢掉,而中文需要 8bit,于是就坏掉了)

而 Outlook 可能会用 quoted-printable(quopri)编码转码下变成:
"Hello,=20=E8=BF=99=E6=98=AF=E4=B8=80=E5=B0=81=E4=B8=AD=E6=96=87=20Email~"
可以看到里边的非英文被弄成“=XX”形式了

在 Gmail 则可能会用省点空间的 Base64 编码转换成:
“SGVsbG8sIOi/meaYr+S4gOWwgeS4reaWhyBFbWFpbH4=”


在正常人的邮件来往,以及多数邮件列表里边,这些编码其实都问题不大
(只要别碰上将 GB18030 也声称为 GB2312 的国产破旧邮件服务导致丢字)
但是在 KML 之类开发邮件列表,
由于习惯于在邮件正文里附上补丁,而他们又习惯于直接把邮件原始内容作为补丁文件使用,
于是如果使用了 quoted-printable 或 base64 编码,
命令行的 patch 就会弄错字符(KML 那些黑客多不使用中文,所以没特地处理 quoted-printable 或 base64 编码)

另外,某些人倾慕 Emacs 这等神器,但是又不肯去配置好 Emacs 中文
(默认的 Emacs 带了个基本的邮件客户端,但是一样没特地处理 quoted-printable 或 base64 编码)
所以为了兼容而做的 base64 编码在他们的 Emacs 里也是显示不了中文。


2011/1/30 林泽耸 <l.zeson at gmail.com>:
> How to use UTF-8 in Gmail?
> So poor my english
>
> 在 2011年1月28日 下午9:17,Aron Xu <happyaron.xu at gmail.com> 写道:
>> (噢,不。。。又是这个人,又是这个话题。。。)
>>
>> 1. 引文风格
>> 2. 正文格式
>>
>>    尽量用纯文本,不要用 HTML 格式
>>    尽量少用附件
>>    用 UTF-8 编码
>>    注意换行,一行不超过 80 个字符,保持在 72 个字符更保险。行长尽量等长,段落之间用空行分隔,利于阅读。
>>
>> 3. 标题


关于邮件列表 ubuntu-zh 的更多信息