admin管理员组

文章数量:1530855

2024年7月11日发(作者:)

邮件乱码知多少

巧巧电脑网络 2007-10-03 CPCW 赵伯青 收藏此文

大 中 小分享到 QQ空间 人人网 开心网 豆瓣 新浪微博 腾讯微博 更多 0

对于常上网的朋友来说,收发电子邮件是最平常不过事情了,时间久了,相信你也曾收到过

一些奇奇怪怪的字符,不知道是什么意思,令人烦恼不已。特别是一些新网民,更是不知所

措,或是弃之不理,或是当作垃圾邮件干脆删除。

对于常上网的朋友来说,收发电子邮件是最平常不过事情了,时间久了,相信你也曾收

到过一些奇奇怪怪的字符,不知道是什么意思,令人烦恼不已。特别是一些新网民,更是不

知所措,或是弃之不理,或是当作垃圾邮件干脆删除,错过了一些重要的信息。所以我们应

当学会怎样正确处理这些乱码邮件。

为了能够正确处理这些乱码邮件,必须了解乱码产生的原因。出现乱码的原因很多,最

主要有二方面原因。

传输机制不同

由于INTERNET的某些邮件服务器不支持8位(非ASCII格式)传输造成的。具体来说,

在直接发送中文双字节或二进制等非ASCII码格式(如中文双字节、图片文件.JPG、可执

行文件.EXE、压缩文件.ZIP等二进制文件)时,由于主机无法处理,便把信件中的每一字

符的第八位都截去,造成邮件失真或损坏,接收到的邮件便是一堆乱码。此种乱码不可恢复,

只能重发。

邮件编码不同

邮于各种电子邮件软件的默认配置不同,收件和发件人自己的选项也各不相同,所以在

收编码的信件后,系统不能自动识别编码方法,系统不能自动解码,这样当你查看信件的内

容时,就会出现所谓的乱码,使收件人无法阅读该文件。

解决方法:

传输机制不同的解决方法。

在发送8位格式的文体文件时,必须事先进行编码,将文件转换成7位ASCII码或更

少位数的邮件之后,再发送出去,收件人在收到邮件后,利用专用的解码软件如WINZIP7.0、

XFERPRO2.0等进行解码,这样,便可阅读了。

常见的编码方式有:

UUENCODE编码

这是很早以前在UNIX上就有的编码程序,主要用都集中在UNIX环境的使用者中,目前使

用者已很少,其主要特征是:编码以BEGIN开头,以END结尾。且 旧厦恳恍凶帜付家杂

⑽淖帜窶开头。

MINE/BASE64编码

这种编码方式是将三个字节(8位)用4个字节(6位)表示,由于编码后内容是6位的,

因此可以避免被截去,其主要特征是有CONTENT-TYPE、CHATSET、

CONTENT-TRANSFER-ENCODEING:64这几个标志。

QUTOE-PRINTABLE编码

由于用这种格式表示信息,其内容都是以ASCII码表示的字符,因此可以避免被截去。

其主要特征是有大量的“=”和大量的英文字母。

编码不同的解决方法。

对于编码不同造成的乱码,应首先试一试转换编码的方法。因为这种编码大多出现在中

文邮件上。因此,当乱码出现时首先应当检查编码方式是否为“简体中文(GB2312)”,

如果不是可用鼠标点取“查看”菜单下的“编码”选项,选中“简体中文(GB2312)”编

码方式,如果不行,切换成其他编码试试,通常问题都能得到解决。

避免乱码的几点建议:

为减少收信时出现乱码,建议将字体的“国际设置”定义为“简体中文(2312)”,以

OUTLOOKPRESS为例,具体方法如下:

用鼠标点取“工具”菜单下的“选项”选项。

选择“阅读”标签,并单击“国际设置”按钮。

选中“为接收所有邮件使用默认编码,单击确定按钮。

尽量利用附件功能发送文件。

用附件发送邮件时,附加文件可以自动进行“BASE64”方式编码,收件人收到信后,

打开附件文件,文件自动进行解码。因此强烈建议你采用这种方式发送中文类邮件。

编码文件应添加足够的“信头”信息。

在直接发送中文双字节或二进制等非ASCII码格式邮件时,如果对方的邮件服务器不

能处理第八位数,则需要对文件进行编码,并添加足够的“信头”信息。建议对“UUENCODE”

编码用UUENCODE ENCODING作信头,对“MINE/BASE64”编码用BASE64 ENCODING

作信头,对“QUTOE-PRINTABLE编码”用PRINTABLE ENCODING作信头。

拓展阅读:用VB实现自己的邮件“自己发”

VB中有两个邮件收发功能的核心控件:MAPI会话和MAPI消息控件。MAPI会话控件用于

建立和控制一个Microsoft Mail会话,MAPI消息控件用于创建和收发邮件消息。此外,程

序必须运行在采用MAPI的消息系统(如Microsoft Exchange、Outlook等)的环境中。 窗体

设计 打开VB,在Form1中加入5个文本框。

邮件乱码解析

收到远方友人的电子邮件,但当您满怀欣喜打开的时候,面对的却是一堆乱码,扫

兴之余更是着急。电子邮件的乱码是困扰中文电子邮件用户一件头痛的事。本文就电子软件

的常见编码方式和解决方式作一介绍。

要解决电子邮件乱码的问题,我们很有必要了解一下电子邮件是如何进行编码的,

以便可以“对症下药”,尽快解决问题。由于历史原因,E-mail只允许传送字符,而且是7

位字符的E-mail网关时,毫无疑问地会出现问题。这些7位的E-mail网关把汉字内码第八

位的1全变成了0,于是形成了一些不可读的文字。好在现在越来越多的E梞ail网关已能

处理8位字符,国内更是如此。所以,直接传送中文问题不大,但是要和国外的朋友通信

就另当别论了。

为了解决E-mail传输8位字符以及二进制文件的问题,出现了各种各样的编码方

式,概括地可分为对E-mail正文的编码和对E-mail附带文件的编码两类。对E梞ail正文

的编码有Usenet上专门针对中文的HZ码等,对E-mail附带文件的编码则有UUENCODE,

BINBEX等。而在Internet上标准的编码方式却有MIME(Multi-purpose Internet Mail

Extensions多用途Internet邮件扩展),它对E-mail传送多媒体信息(诸如声音、图像、

二进制文件等)进行了一系列详细而复杂的定义,包括了对E梞ail正文的编码和对E-mail

的附带文件的编码。现在绝大多数的电子邮件软件如ENDORA、Foxmail和THE-BAT!等

都支持MIME编码方式。

纯中文方式编码:这就是我们通常看到的一般文本,没有经过任何编码,任何软件

都能准确识别,因而不会出现任何乱码(在指定了正确的字符集后)。

UUENCODE编码:一些较老的邮件服务器上这种编码使用较多,目前的Ftp Mail

等服务器也是使用此编码(如MrCool下载的文件等)。UUENCODE编码的主要特征是编

码首行由BeginXXX开始,结束一行为End,且通常其中的每一行开始均为“M”,只要有

了以上几个特征,就能确定是UUENCODE编码。

QUOTED-PRINTABLE编码:这种编码是将7FH以上的ASCII字符(即汉字)用

它对应的文字串表达出来,即如一个ASCII编码为0ABH的字符,将用=AB来代表它。它

的典型特征是文本中有大量的这种用“=”来构成的符号,即=XX=XX=XX等,只要有这种

符号,即可确认。

BASE64编码:BASE64编码的判断较复杂,但它也有一个明显的特征,由于

BASE64是通过“=”来实现对齐,因而假如你在一个排列非常规则(每行字符数相同,一

般为63个),没有任何可识别内容的编码,且若最后一行未满并有一至三个“=”之类字

符时即可确认它是BASE64编码;特别的一点是,“.”不属于BASE64编码后的字符,也

就是说一个用BASE64正确编码后的字符,也就是说一个用BASE64下确编码后的信件将

决不可能在信体部分有“.”出现,否则就是误码。

HZ编码:这是国外的中国人发明的一种编者按码方式,它把汉字的最高位去掉,

然后用一特定符号来表明哪些编码经过了处理。这种编码也极易识别:在信的内容中通常会

有这样的一组符号:“~{”和“}~”,其中的内容是不可读的(乱码),而在这一组分界符

外的都是可读的英文字符。

Bit7码:这并非一种编码,而是网络传输误码。它是由于网络不支持8位传输引起

的,通常在局域网的接入方案中较为常见。它跟HZ编码类似,只是没有标明哪些内容是截

去了最高位的。识别办法跟随HZ类似,如果一段信件中英文部分是正常的话,即为此种误

码。这种误码无法解码,只能要求对方用7位编码(如以上的各种编码)重新发送。

E-mail乱码的种类产生原因及其方法:

1 中文内码不一致的“乱码”,最为常见的是BIG5码与GB码。征状为信件内容

有空格、日文、偏旁部首、个别汉字等等。其原因是这种乱码是由于发信的计算机的中文内

码不是国标码(GB)所造成的,如香港、台湾地区和海外使用的汉字系统多数是BIG5码。

如果用此内码发送中文信件,国内使用的国标码的用户阅读时就会出现乱码现象。解决方法

之一是:在系统上加挂多内码语言平台,如四通利方、南极星及两岸通都是不错的选取择。

解决方法之二:选取用支持BIG5码与GB码转换功能的E梞ail软件,如Foxmail、方正

飞扬等,缺点是有效果不很理想。

2 部分乱码:征状为收到的邮件中有句子能正常显示,但是有的句子仍出现乱码。

原因之一是发信人在输入汉字时不留意输出入了某个控制键或者折行不正确,产生半个汉字

的现象。众所周知,在计算机语言里,汉字是由两个字节组成的,如果不正确地折行,前一

行最后一个字的前半部分留在本行,而后半部分则被折到了下一行。结果,后半部分与后面

一个字的前半部分组成了一个新的汉字,如此类推,于是整行汉字就成了天书。解决方法:

将邮件保存,用Word、WPS97等文字处理软件在汉字乱码之间插入一个空格或者删除一

个乱码字符。这样,邮件内容虽然少了一个字,但剩下的部分恢复正常,况且我们凭上下文

也可基本猜到这个字了。原因之二:E-mail软件(尤其是英文软件)以及邮件传输过程中

也可能造成这种不正常的折行。英文E梞ail软件进行折行是依据英文单词间的空格来判断

的,但中文却没有空格。因此,E梞ail在进行折行处理时,出错就在所难免了。而在E-mail

的传输过程中,E-mail网关对长行的处理方法也不尽相同,有时会使行末的半个汉字丢失,

从而造成半汉字现象。解决方法:要彻底解决这个问题,最好是在每个汉字后加入空格,也

就是利用汉字输入法字间加空的功能,这样就不会出现错误的折行了。现在的中文系统如

RichWin等,都有提供了字间加空的选择。原因三:有时汉字系统调用出错也会造成这种乱

码,盗版的汉字平台出现这方面问题的概率较高。解决方法:使用正版软件,或者将系统内

码先改为BIG5,这时看到全文乱码,再将内码改为国标码即可;或者重新调用汉字系统。

3 附件采用MIME格式的乱码。征状:看到的信件内容全是大小写英文字母而且

字符排列很整齐。原因是发信人的E-mail软件设置中使用的不全是8位格式,而是MIME

格式所造成的。解决方法:将自已的E-mail软件的附件格式设置成MIME格式再阅读信件。

4 七位码的中文乱码。征状:看到的信件内容全是大小写英文字母中间还有西文

大括号。发信者的E-mail软件设置中使用的是7位格式。解决方法:通知对方重发邮件。

5 UUEDCODE类型的乱码,严格说来不能将其称为乱码,但是许多网友(尤其一

些网上新手)在面对这俨如天书的UNENCODE编码的邮件时,往往无所适从,所以也把

它归为乱码了。原因:时下许多网友喜欢用下载软件,或者中间通过E-mail索取软

件,而这些FTP Mail服务器采用的是UNEDCODE编码,所以接下来的邮件就是一些文不

成书的怪字符了。解决方法之一:选取支持UNENCODE解码功能的E-mail软件,如

ENDORA、THEBAT!等;解决方法二:用Wincode、WinZip6.3等软件解码。对于拆分

的邮件必须分别保存,然后将它们用DOS的Copy命令合成为一个以*.uu为扩展名的文件,

具体操作如下:copy文件1+文件2+…文件N文件名.uu,然后再用上述软件解码即可。

6 非上述原因造成的乱码:邮件的全文皆为乱码。原因是E-mail软件或邮件传输

出错所造成的。这种问题出现的概率不是很高,比如文件太长造成文件的丢失或少了一截,

你的ISP的收发邮件的服务器出现故障等等。解决方法:如果是发信人E-mail软件的问题,

你可以请对方重新调整或更换一个E-mail软件。至于诸如服务器故障之类的原因,就不是

用户所能处理的了,最好咨询一下你的ISP,等故障排除后,请对方再发一次。

邮件乱码的种类

作者:人文在线 文章来源:本站原创

造成邮件内容乱码的原因,可以分为两大类。

一:“语系错乱”所造成的乱码,

二:邮件传输时编码错误所造成的乱码。

一、语系错乱:

“语系错乱”所造成的乱码,只要切换回原邮件所属的语系,就可以正确显示(您的本地电

脑上也要有该语系的字符集才行)。

比如,当您收到一封来自台湾的邮件,由于其默认的语言编码字符集为big5,而您本地电

脑默认gb2312编码, 您在浏览时需要将Outlook Express 的“查看”>>“编码”,选成繁

体中文浏览才可以。

默认语系不同所造成的乱码形式,比如邮件内容变为:

------ 耀耀鸅鸅耀 耀?鶳?耀耀鸅鸅耀耀?鶳 ??F¥[2`±z1i-O?H?A|i?IAOao?F﹐

N!Aoo?U?A?H3]-p!i|

------

二、邮件传输时编码错误所造成的乱码:

MIME 的编码目前使用最广泛的主要有 Base 64 和 Quoted-Printable 两种。因为错误的

编码,邮件内容可能已经因邮件编码错误导致损坏。很难再还原。最简单的方法,就是请发

件人重新投递,并提醒他正确设置传输邮件的格式(也可以告知对方更换发信软件后再试)。

MIME编码错误所造成乱码的形式,比如邮件内容变为:

……

=A8=C3=A7@=A6=B9=B5=DF=AA=BA=A7=DC=A5

=CD=AF=C0=C3=C4=AA=AB=B7P=A8=FC=A9=CA=B8=D5

=C5=E7,=B1o=A8=EC=B3=CC=A6=B3=AE=C4=A7=ED=B5

=DF=A9=CE=B1=FE=B5=DF

------(Quoted-Printable传输编码格式)

或者是:

------

5bel56iL5biIOg0KICAgIOS9oOWlvSHpmYTku7bkuK3mmK/lrqLmiLflj43mmKDnu5nlkrHk

u6zk

vIHkuJrpgq7nrrHlj5Hkv6HlkI7lr7nmlrnpgq7nrrHmlLbliLDnmoTpgIDkv6Es6K+35biu5b+Z

55yL55yL5piv5LuA5LmI6Zeu6aKYLOiwouiwoiENCg0K56Wd5oKo5bel5L2c5oSJ5b+r77y

BDQo9

PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT

09PT09PT09

PT0gDQrlvKAgIOW9pCAg44CA44CQ5YyX5Lqs5rig6YGT6YOo44CRICAgIOS4reWbve

S4h+e9kQ0K

PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT

09PT09PT09

PT09IA0K5Zyw44CA44CA5Z2A77ya5YyX5Lqs5biC5Lic5Z+O5Yy66byT5qW85aSW5aS

n6KGXMjfl

------(Base 64传输编码格式)

乱码大全(1)──综述(第二版)

bluesea (蓝海), 信区: Internet发信站: BBS 水木清华站 (Sun Feb 15 15:54:37 1998)

本文第一版本于98年2月3日发于本板。这一版本修改了原文中关于字符集的

一些不确切的说法。本文原载于水木清华 BBS的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以不经过作者允许:(1) 转载水木清华 BBS 的信

头;(2)不修改原文;(3) 转载仅限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将本文或局部用

于任何正式出版的刊物。请所有转载文章的网友注意阅读本文的第一段,遵守网络的惯例、尊重作者的劳动。本自然段是全文

的一部分。

谨以该系列的文章,作为给水木清华 BBS 及诸位网虫的新春礼物。

字符是计算机表达信息的主要方式,字符的主体部分是美国信息交换标准码ASCII,现代的

ASCII 是一个七位的编码标准,包括可打印符号、控制符号等。

由于计算机通常用“字节(byte)”这个八位的存储单位来进行信息交换,因此不同的计算机厂

家对ASCII 进行了扩充对值大于 127 的 128 个符号予以定义,并赋予符号的形状。如

MS-DOS 使用 OEM 字符集,Windows 支持 ANSI、Symbol、OEM 等字符集,它们在

值为 127 以上的部分一般都是不统一的, 这些“扩展的ASCII”字符只有在特定的环境下才

具有“交换”的意义。

计算机以及很多计算机网络协议的制定都是建立在ASCII 码的基础上的,但是ASCII 码用

于计算机信息的表示有很大的不足,主要表现在多国文字、图形、声音等二进制文件、信息

压缩、信息保密等很多方面。 因此,在 ASCII 和扩展ASCII 码的基础上,用一定的规则

定义一些新的信息表达形式,就形成了信息传输和处理中的一大类概念和事物,即编码和解

码。当信息编码和解码能够统一的时候,信息是可以交换和被理解的;相反,当信息编码和

解码不能够统一的时候,信息就不能被交换和理解,这就是“乱码”。(以下不再使用引号)

乱码的产生既然是信息编码和解码不能够统一的结果,因此,解决乱码的过程就是找到和编

码相统一的解码方法,并对计算机软件不能全自动进行适当解码的信息进行重新的处理和解

码,使得恢复信息可以被理解和交换的目的。

本文针对 BBS 上常见的问题,对初学者比较全的介绍一下各种乱码的产生、判断和解决方

法。可以说,常见的乱码有这样一些规律:(1) 和汉字或其他国家的文字有关;(2) 经常发

生在 email 的阅读中; (3) 和传送二进制文件有关;(4) 和信息的加密解密有关。而乱码

的原因正如前面所说的,和软件的版本,即他们能够自动识别和使用的解码协议有密切的关

系。本文的写作主要针对 DOS/Windows 操作系统的用户。

本文以 email 和 WWW 中经常出现的、初学者不易理解的特殊标记、乱码等现象,以乱

码的识别、原因和解决方法为主线,涉及:ROT13、汉字乱码、ANSI、UUENCODE、

MIMENCODE、QUATED-PRINTABLE、HTML、 文件格式和数据加密等方面。是个大杂

货店。

“我遇到乱码怎么办?”这是几乎我们每个人都曾经遇到的问题。我想稍微总结一下这个大家

关心的问题也有一些时间了,不过 Internet 博大精深,到动笔时感到知识实在是极度匮乏。

那些曾经熟悉的东西写出来好像就不是那么回事。

在做水木清华 BBS 病毒讨论区板主的这段时间里遇到的大量问题中, 更多的是出在与病

毒相似却不是病毒的地方,比如计算机硬件软件本身的问题,某些国产反病毒软件因质量问

题破坏文件和系统等等。所以,要把计算机用的更顺手,需要的是更多地了解你所使用的这

个工具。防范病毒只是一个方面。一个新手,当你有机会迈进 Internet 的时候,你已经拥

有这个博大精深的世界的一半了,只是有很多人还浑然不知。 Internet 就是你的老师,你

自己就是你的老师。

我希望大家对这个系列提出一些意见、补充和建议,以便修改其中文章中的错误、Bug 或

充实没有概括到的内容。

乱码大全(2)──ROT13

Jvgu n tbbq pbafpvrapr bhe bayl fher erjneq, jvgu uvfgbel gur svany whqtr bs bhe qrrqf,

yrg hf tb sbegu gb yrnq gur ynaq jr ybir, nfxvat Uvf oyrffvat naq Uvf uryc, ohg xabjvat gung

urer ba rnegu Tbq'f jbex zhfg gehyl or bhe Svgmtrenyq Xraarql

如果你自己能够看懂上面的短文,那么请忽略本文的其余部分。

如果有人写来一封莫名其妙的信, 含有“V Ybir lbh!”这样的句子,也许你还有可能以为这是

德语。其实这是一种最简单的通用编码──ROT13, 这个句子实际上是“I Love you!”。不懂

德语的人经常要闹笑话,Usenet 上经常有这样的标题:This is not ROT13, it's German. 或

者 This isn't German, it's ROT13. 足见这个误会是世界性的。

ROT13 是一种简单的编码,它把26个字母分成前后两组,每组13个,编码和解码的算法

相同,仅仅交换字母的这两个部分,即:[a..m] --> [n..z] 和 [n..z]--> [a..m] (--> Caesar 13)。

英国帝国大学计算机在线字典解释 ROT13 时说:

“It is used to enclose the text in a sealed wrapper that the reader must choose to open -

e.g. for posting things that might offend some readers, or spoilers. ” ROT13 用简易的手段

使得信件不能直接被识别和阅读,也不会被搜索匹配程序用通常的方法直接找到。经常用于

USENET 中发表一些攻击性或令人不快的言论或有简单保密需要的文章。

常见的 email/news reader 程序都可以对 ROT 13 进行解码,如 Netscape和 Microsoft

News 等。一些 Text 编辑程序也可以实现 ROT13 的解码。 比如

EditPad( /~johnfg/ ,双牛站的 HTML TextEditor分类下面也可以

下载)。由于 ROT13 是自逆算法,所以,解码和编码是同一个过程。

下面的 C 程序是最短的 ROT13 处理程序,它只有78个字符。当然在MSVC编译中会得

到没有库声明的警告或错误。

main(c){while((c=getchar())+1)putchar(isalpha(c)?tolower(c)<'n'?c+13:c-13:c);}

(出处: /~fine/ )

下面的宏可用于 Word6、7 进行 ROT13 编解码:( 本程序的出处:Subject:

Re:ROT13Macro/From:**************(WNCOAN)/Date:1998/01/29/

Newsgroups: mming )

Sub MAIN

StartOfDocument

While Not AtEndOfDocument()

If Asc(Selection$()) > 64 And Asc(Selection$()) < 91 Then

newAsc = Asc(Selection$()) + 13

If newAsc > 90 Then newAsc = newAsc - 26

CharRight 1, 1

Insert Chr$(newAsc)

ElseIf Asc(Selection$()) > 96 And Asc(Selection$()) < 123 Then

newAsc = Asc(Selection$()) + 13

If newAsc > 122 Then newAsc = newAsc - 26

CharRight 1, 1

Insert Chr$(newAsc)

Else

CharRight

EndIf

Wend

End Sub

下面这些网址以 cgi 的方式提供在线的 ROT13 转换。

/~davis_t/

/tk/

/~niclas/reddwarf/

到现在为止,您已经可以对本文开始的那一段代码进行解码了。那是美国前

总统肯尼迪的一段演说。

乱码大全(3)──汉字与乱码

汉字乱码是一个古老的问题了。自从汉字走进计算机,关于汉字乱码的问题一天也没有消失

过。有关汉字和 HTML 的问题,将在本文系列的稍后的文章中单独谈到。本文不准备重复

GB_2312-80(国标)、BIG5、GBK、HZ 的最基本的互相转换的问题,相关的内容可以在本

BBS Chinese 板询问。 这里以其他角度做一些补充。

由于编码位置上的巧合和汉字平均出现概率上的统计,用GB环境看BIG5编码的文字,将

有汉字显示成为日语的假名,这个是在GB环境下看到BIG5汉字的主要特征。上网时间长

一些,就会积累一些经验,使得你能够一眼区分乱码的类型。比如下面的例子就是 BIG5:

¨睹絏〃bluesea

れ睲地BBSΘ舧 BBSい锣更腊

れ睲地 BBS

璸衡诀厩秆∕ㄏノ硁ン筁祘い笿

Internet癚阶跋

ぃ竒筁

琌 讽

す砛(1) 锣更

贺 BBS ㎝獶坝穨┦借呼翴

龟悔拜肈セゅ更

兵ン场骸ì

telnet:// WWW砐拜

锣更セゅ

れ睲地 BBS 獺繷(2)ぃэゅ(3) 锣更度

腨窽贺Αй脓腨窽獶

セゅ┪Ы场ノヴタΑ

セ礛琿琌ゅ场だ

常见的汉字乱码还有 HZ 编码,这是一种屏蔽最高位的汉字表示方法,它是在GB 和 BIG5

的基础上,用 ~{ 和 ~} 括起汉字编码的部分。比如:

~{!0BRBk4sH+!1#,WwU_#:~}bluesea~{#,K.D>Ge;*~}BBS~{3IT1!#;6S-TZ~}

BBS~{VPW*TX#,0oVzvJ9SCHm<~9}3LVPSv5=5DJ5

~{NJLb!#1>NDT-TXSZK.D>Ge;*~} BBS~{5D~} Internet ~{LVB[Gx!#5XV7JG#:~}

telnet:// ~{#,~}WWW ~{7CNJ5D5XV7JG~}

~{!#~} ~{51OBCf5DLu<~H+2?BzWcJ1#,W*TX~}

~{1>ND?IRT2;>-9}WwU_TJPm#:~}(1) ~{W*TXK.D>Ge;*~} BBS ~{5DPEM7#;~}(2)

~{2;P^8DT-ND#;~}(3) ~{W*TX=vO^SZ8wVV~} BBS ~{:M7GILR5PTVJ5D8vHKMx5c!#~}

~{QO={8wVVPNJ=5D3-O.#,QO={7GWwU_=+1>ND;r>V2?SCSZHN:NU}J=3v~}

~{0f5D?/No!#1>WTH;6NJGH+ND5DR;2?7V!#~}

很多海外中文杂志,如著名的《华夏文摘》( )等都仍

然采用 HZ 编码方法。HZ 编码用额外的控制序列来控制字形的显示, 字母和数

字是不被编码的,它们在 ~{ 和 ~} 标记对的外面。这种编码不符合汉字与文本

字符的固定映射规律,处理起来相对麻烦。著名的汉字平台──南极星 ( NJWIN

1.6, ) 对HZ 提供了灵活和强大的支持。

海峡两岸的语言经过长期的发展,实际上已经不能形成一一对应的关系,GB

和BIG5的转换也是如此。因此这种转换往往具有不可逆性,倒不是说一段文字不

能在 GB 和 BIG5 之间互相转换,而是说一旦你转换错了,信息就不能复原。比

如你拿一段本来的是 GB 的文字当作 BIG5, 然后再实施 BIG5 -> GB 的转换,

就会损失信息,这时逆变换将不能完全得到原来的文字。比如 SMTH WWW 发文时,

本是 GB 的,错选了 BIG5 按钮就会如此,反之也类似。

汉字的另一个问题是所谓的“半个汉字”乱码,由于很多英文编辑软件以字

符为单位来处理文本,汉字被删除一半后,剩余的部分会和相邻的汉字重新组合,

使得文本面目全非。因此,除了注意在输入、删除的时候注意这种问题外,还要

注意不要在英文字处理软件中轻易使用“字符替换”功能,这往往会把一个汉字

的后一个字符和相邻汉字的前一个字符当成一个汉字被替换掉。这种乱码最后往

往令人莫名其妙、找不到原因。

需要说明的是,简体和繁体这两个概念和GB、BIG5并没有逻辑上的联系,GB

的定义是简体字,BIG5采用的是繁体字,但是为了阅读的方便,在各自的编码中

再做一个内部字形或字体的映射,就形成了所谓 GB繁体或 BIG5简体之类的概念,

他们仅仅是一些汉字软件提供的方便功能,如南极星等。我们常见的WWW 浏览器

Microsoft Internet Explorer 4.x 和 Netscape Navigator 4.x 都已经内置了

比较完善的汉字转换功能。加装了语言包的 IE 4.0 还使得我们脱离汉字平台也

可以进行中文处理,并且可以处理大字符集 GBK 。详见Win95_win3.x 讨论区中

“让Pwin95更顺手”系列之(11)。

在中文平台上,很多人有不同的见解。本文的主旨与此无关,仅仅是综合各

个方面的因素,我个人向计算机的初学者建议选择中文 PWindows 95 OSR2 或更

高的版本作为最基本的操作环境。中文之星 ( 、

/ ) ,四通利方Richwin( / )

等由于技术和企业行为的不稳定性,不适合作为具有依附性的中文平台。但是这

些软件中的局部,如新拼音输入法、支持剪辑板的码转换器等还是具有一定特色

的。如果有对这个问题感兴趣的讨论,请到Chinese 板搜索以前的标题继续讨论。

在 Chinese Community Information Center (CCIC),集中了一些中文处理

的比较完整权威的解决方案,该网点地址是 /software ,

其中包括了各种操作系统、各种汉字编码的处理方案和软件。

除了常见中文平台外,通过 、

、 等共享软件网点,查询

GB、BIG5、chinese 等关键字可以获得大量的小型应用程序,包括码转换器。尽

管如此,本文还要重点推荐一些用于 DOS 的命令行处理工具, 具有使用方便、

可以进行批处理等特点。他们是:

c2t (将 GB 或 BIG5 转化为拼音)

HZ (gb2hz hz2gb zw2hz)

(convert gb to hz, hz to gb, zw to hz respectively)

hc (convert between GB and BIG5)

下载地址为:

/cgi-bin/search?query=

/cgi-bin/search?query=

/cgi-bin/search?query=

其他软件请到 /ftp-pub/software/ 查找。另外,GB

和 BIG5 属于两个不同组织各自制定的标准体系,对应汉字编码的转换都是通过

表格来转换的,他们之间不存在任何内在的逻辑关系或函数,试图寻找这种公式

的人,请不要白费精力。

几乎所有新生的软件在中国使用都会面临一个汉字兼容的问题,比如新生的

Java 及其开发环境、动态HTML领域等都从未幸免。 通过NT的资源存取能力可以

实现英文软件的界面/资源汉化,由于 PWindows 95 对话框的缺省宋体的大小为

9 磅,而英文 Windows 95 的相应值为 MS Sans Serif 8,所以很多英文软件在

PWindows 中运行时, 界面中的字残缺不全,这些也可以通过资源的重新编辑予

以调整。

但是,软件内核的汉化不是可以轻易实现的。即使是厂家做的汉化工作也有

非常粗糙的痕迹。比如 P-IE 4.0 在安装繁体汉字包后,PWindows Help 就产生

了内码的混乱。这就是个严重的 Bug。有时只能随意选出一个具体的条目弹出帮

助窗口,再反过来调出帮助主题窗口,偶尔还可以对付使用。或者你就再运行一

份 NJwin,在 Option 中选择 Standard English/Western 。其实这一招在以前

讨论 OutLook Express 看 BIG5 邮件的时候就用过了,也是个乱码的问题,详

见 Win95_win3.x 讨论区精华区中的 “让PWin 95更顺手(9)─南极星与OutLook

Express”。

--

脊柱是我们这种生命的重要特征,在此基础上我们才有了光芒的智慧和

丰富的情感。上帝赋予我们自由的意志,同时也赋予我们选择的重担。

乱码大全(4)──BBS与ANSI

ANSI (American National Standards Institute ) 规定了一组控制字符和

键盘的扩充规则,本文不作为使用 ANSI 彩色和位置控制在 BBS上进行应用的初

级指南。这方面的内容参见 BBSHelp 和 ASCIIart 板及其精华区。

很多 BBS 的 WWW 版本在文本转换的时候没有解释 ANSI 的效果,而是把控

制符号 01Bh 解释成为 * 号,这就形成了阅读 BBS 文章的特殊乱码效果。比如:

*[1m (高亮度字)、*[1;5;33m (高亮度黄色闪烁字)、*[1;31;44 (高亮度蓝底红

色字) 等等。

目前,国内的著名 BBS, 水木清华、网易、蓝天等站的 WWW 转换程序都已

经解决这个问题。在 Telnet 中发表文章可以使用 ANSI 控制,利用 MS-DOS 的

Help 可以获得 ANSI 字符控制的详细信息。(如 C:DOS>Help )。在使

用位置控制的时候,应该尽量使用 ESC[s 和 ESC[u (存储和恢复光标位置)来控

制文本,以免发生位置错乱,并尽量在每行结束的时候恢复默认的属性,以免因

为翻页而造成ANSI控制的不完整。

NetTerm 有那么点不太引人注目的小秘密,这就是它自己支持一些类似Ansi

控制的扩充控制序列。曾经作为一个调剂的手段,为上 BBS的网虫增添了不少乐

趣。随着清华 BBS 上的一些网虫不断“露一手”,现在全国很多 BBS 都使用了

这些扩充的控制来修改标题栏、 状态栏,来表示对网虫的问候。如 北方交大、

网易……。NetTerm 的扩充序列参见它的Readme文件或Virus 精华区“反病毒与

黑客/工具/趣闻”目录下面的摘录。

Ansi 作为标准字符的一种扩展的表现手段, 起到了丰富色彩,活跃气氛的

作用,这些作用的效果会随着阅读一篇文章的结束而结束,而很多扩展控制却可

以留下来,改变你的标题栏状态栏,甚至打开你的浏览器,乃至死机。 Netterm

在解释自己创立的扩充序列的一些 Bug也很明显地表现了出来,同时,还有很多

终端程序在解释控制序列的时候,程序不够严密,对于非标准的序列往往会产生

意外的后果。利用程序编制上的缺陷,采用类似 Ansi 序列的方法激活这些 Bug,

这就是我们这里说的所谓“BBS ANSI 炸弹”。

扩展控制序列的滥用,引起了 BBS上的一些争论,很多人表示反感。谁当初

会想到围绕这个问题会有这样多的故事呢。不过我们今天不得不通过一种管理的

手段来制约它,这一方面说明完整的管理制度是维护一个全局的必要手段,同时

也说明在网络这个苑囿中,自觉二字还远没有达到理想的程度。经过不太长时间

的讨论,终于有了结果。就是最终由 Leeward 站长修改 BBS 软件,把扩充序列

的解释权交给用户,允许用户从个人参数设定中禁止这些效果。详细的信息请参

考sysop 板的讨论,以及最后 Leeward 公布的解决办法。

--

脊柱是我们这种生命的重要特征,在此基础上我们才有了光芒的智慧和

丰富的情感。上帝赋予我们自由的意志,同时也赋予我们选择的重担。

乱码大全(5)──UUENCODE

UUENCODE 在我们水木清华 BBS 已经讨论得很多了,关于 UUENCODE 的详细

内容参见水木清华 BBS Virus 和Hacker 精华区中的“UUENCODE/decode 知识与

使用入门”(一)~(四)。这里只简单提一下并作一些补充。 UUENCODE 的 UU 指

用于 Unix 之间传送二进制文件,就是 Unix to Unix。在Email 或 News 中

UUENCODE 经常用于 Attach 二进制文件。目前不仅Netscape、Eudora、MS-mail,

甚至包括 Hotmail、之类的 Webmail 在内的绝大多数email程序都支持

UUENCODE 的自动解码。在一些软件网点, 如 等,

可以找到 UUENCODE 的源程序。

UUENCODE 代码有下面的样子:当软件不能自动解码(如在telnet中访问BBS)

时可以转寄到 email 中或通过剪辑板将 UUENCODE 代码存入文本文件,改文件

名后缀为 UUE,然后通过 Winzip 解码。

begin 666

M4$L#!!0````(`)%]0B2`HV;;&P$``$8!```(````=&5S="YT>'1=C%.PD`4

M1?

M)AI;HL'(R$J7[^7<^X#``#8

M9ALT&B=`@S=VR-U';]-;U(?,Q4BU::D6F$*FZ7S/S`FX+C9DBZ:4FN?@0BK

MD3MZPB3N/?N:K0-QLL]F^QQDG3#-MY78K/%@0OR"C=E`'@OC7'M]/

M!BL'=8U,UX,"5,HV8U'@MWYS*PB6J3S8(#)L/`GTPU>

M000>(NM+4#$-+$QT)>HB6>P&7EY6*]G2Z@@SWFFI..TKE/#9IM`TLO>KM/

……

……

MG&OZ"M$/4$L!`A0`%`````@`D7U")("C9ML;`0``1@$```@````````````@

E`+:!`````'1E

`

end

由于 UUENCODE 的编码中有小于号“<”, 和某些 HTML 标记会造成冲突或

歧义,因此,在 BBS 中出现的 UUENCODE 代码, 通过 BBS2WWW 程序被 WWW 用

户阅读的时候,会得到混乱的不正确的结果。除非 BBS2WWW 程序做相应的修改。

但是这些修改一般是针对 HTML 标记,因此可能不会考虑周全所有的可能情况。

因此,即使是目前的水木清华 BBS 也没有完全解决这个问题。从 WWW 直接阅读

文章或下载精华区都会出现 UUENCODE 代码出错的情况,目前还没有很好的解决

方法,只能从 telent 上站,直接阅读文章。

用 UUENCODE 传送文件经常用于 ftpmail 或其他传送较大文件的场合, 这

个时候往往是将 UUENCODE 编码后的文件切成小块再传送。所以在编号为第二、

第三……的 email 中,我们会见到没有“begin ………”开头的 UUENCODE代码。

(UUENCODE 代码除了最后两行外每行都是以字母 M 开头的)。接收这类 email,

最好不要使用 Eudora, 因为 Eudora 会将 Attached 文件恢复成二进制文件并

存放在另一个目录里。对于分成多块传送的 UUENCODE 代码, Eudora 会将这些

代码的第一部分恢复成文件──显然这是个不完整的东西,后面的就不管了。这

会妨碍后面你人工合并这些邮件。很多人使用 The_bat 这种邮件程序,它对

Attached 文件是恢复到目录中还是留在信体中, 是有一个选项可以选择的,在

这种情况下也要注意正确的选择。

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

※ 修改:·bluesea 於 Feb 3 01:08:19 修改本文·[FROM: 202.99.62.45]

※ 来源:·BBS 水木清华站 ·[FROM: 202.99.62.45]

发信人: bluesea (蓝海), 信区: Virus

标 题: Uuencode/decode 知识与使用入门 (一)

发信站: BBS 水木清华站 (Mon Jun 9 19:22:13 1997)

Uuencode/decode 知识与使用入门 (一)

由于 BBS 上很多新手对于 UUENCODE感到莫名其妙,不知如何获得

这些程序,病毒讨论区和 Hacker 讨论区使用这个方法传递小程序比较

多,也常用。BBS 上对新手的解答大多比较简单,故写出下面这些,供

新手上手入门。虽然和病毒无直接关系,但大家可以利用这个手段传递

一些 Crack 工具,甚至上载小文件进行交流分析。由于我不在 CERNET,

对 CERNET里面实在不熟悉。所以列举的都是国外地址。

UUENCODE 是将二进制文件以文本文件方式进行编码/表示、以利于

基于文本传输环境中进行二进制文件的传输/交换的编码方法之一, 在

邮件系统 / 二进制新闻组 (尤其是 , 之

类的讨论组 ) 中使用频率比较高。由于位利用率低,Uuencode 之后的

文件要比原来大,这个也是很好理解的。

我常用的 UUENCODE/DECODE 的编码/解码程序有这样几个:

(1) WINZIP 6.x

一个广泛使用的 Windows ZIP 工具。菜单里面有 uuencode的选项,

供将 ZIP 直接生成 UUE 文件。双击 .uue 文件可以自动识别并展

开被uuencode 方法编码的文件;

(2) UUENCODE/DECODE 96

/cgi-bin/texis/swlib/hotfiles/?fcode=00069Z

一个 MS-DOS 命令行工具,能对大的文件以 64 为界分段;

(3) Microsoft Internet Mail

/ie

在选择 uucode 选项之后, Attached 文件自动使用 uuencode 方

案。 这封 E-mail 可以在本地 存盘,生成的文件

以 .eml 为后缀,按文本方式打开,即可看到 uuencode的代码。

--

扫除一切害人虫,全无敌...

※ 来源:·BBS 水木清华站 ·[FROM: 202.96.49.87]

发信人: bluesea (蓝海), 信区: Virus

标 题: Uuencode/decode 知识与使用入门 (二)

发信站: BBS 水木清华站 (Mon Jun 9 19:24:15 1997)

Uuencode/decode 知识与使用入门 (二)

其他的 Windows E-mail 程序,如 Netscape mail, Eudora等大多

都支持在邮件传输、编码、解码时使用 uucode. 类似的转换工具还有

UUCODE,WINCODE 等等。在很多具有搜索服务的共享程序网点上,用象

uucode、uuencode等关键字进行查找,一般都可以找到。如:

上面的工具都可以生成 uucode 代码,如果在 BBS或新闻组上看到

uuencoded代码, 拷贝下来可以用上述工具进行转换或转发到你自己的

邮箱,如果你的邮件客户程序支持 uucode, 都可以自动将其转换成二

进制文件。

经过 uucode 编码的文件可以用 Edit/Notepad 来看,都是类似这

个样子的,有长有短:

begin 666

M4$L#!!0````(`$!.Z^:=-YJ'NZ,``,9J`0`+````0T]-34%.1"Y#3TWL?7U<

M&]>5Z!W-:$8:+!E_(']+@V,K$&.((48R&&PL,*;&@`'S86)[!0Q&C9#H:,8.

......

M``````````$`(`````````!#3TU-04Y$+D-/35!+!08``````0`!`#D```#D

%HP``````

`

end

经过 “Re:”之后的文本前面大多要加上 ">"、":" 或 "|" 之类

的符号,这种情况下应该将前面的一列或几列去掉,才能恢复成原状。

可以进行列编辑(块编辑)的编辑器有 Microsoft C/C++ 7.0 或MASM6.x

所携带的 DOS下的 , 或是使用 Windows 下的UltraEdit4.x,

可以到 IDM 的网点 上去下载。

其它程序也可以,如可以用 sed 很方便的去掉。( 95 下也有 )

用 VC 的编辑器也可以。把 ^> 或者 ^: 替换成空字符串就可以了。

注意要选中 正则表达式 这个按钮。DOS下的QEdit也可以进行块操作

(本段为amethyst/小石头☆剑折不改刚 和 tank/Rabit 补充)

上述涉及的程序如果需要注册,在常见的 Hacker/Crack 网点或相

应的 BBS 讨论组上都可以找到。

--

扫除一切害人虫,全无敌...

※ 来源:·BBS 水木清华站 ·[FROM: 202.96.49.87]

发信人: bluesea (蓝海), 信区: Virus

标 题: Uuencode/decode 知识与使用入门 (三)

发信站: BBS 水木清华站 (Mon Jun 9 19:25:58 1997)

Uuencode/decode 知识与使用入门 (三)

uuencode

========

Unix program for encoding binary data as ASCII. Uuencode was

originally used with uucp to transfer binary files over serial

lines which did not preserve the top bit of characters but is now

used for sending binary files by e-mail and posting to Usenet

newsgroups etc. The program uudecode reverses the effect of

uuencode, recreating the original binary file exactly.

Uuencoded data starts with a line of the form

begin

where is the files read/write/execute permissions as three

octal digits and is the name to be used when recreating

the binary data.

Uuencode repeatedly takes in a group of three bytes, adding

trailing zeros if there are less than three bytes left. These 24

bits are split into four groups of six which are treated as

numbers between 0 and 63. Decimal 32 is added to each number and

they are ouput as ASCII characters which will lie in the range 32

(space) to 32+63 = 95 (underscore). Each group of sixty ouptut

characters (corresponding to 45 input bytes) is output as a

separate line preceded by an 'M' (ASCII code 77 = 32+45). At the

end of the input, if there are N output characters left after the

last group of sixty and N>0 then they will be preceded by the

character whose code is 32+N. Finally, a line containing just a

single space is output, followed by one containing just "end".

Sometimes each data line has an extra dummy character added to

avoid problems which mailers that strip trailing spaces. These

characters are ignored by uudecode.

Despite using this limited range of characters, there are still

some problems encountered when uuencoded data passes through

certain old computers. The worst offenders are computers using

non-ASCII character sets such as EBCDIC.

uudecode

========

A Unix program to convert the ASCII output of uuencode back to

binary. See uuencode for details.

发信人: bluesea (蓝海), 信区: Virus

标 题: Uuencode/decode 知识与使用入门 (四)

发信站: BBS 水木清华站 (Mon Jun 16 03:06:33 1997)

Uuencode/decode 知识与使用入门 (四)

UUENCODE分割和归并是其最基本的应用之一,将大的文件分成若干小的

文件,目的在于减轻或均衡邮件传输的负载。

很多程序都支持基于文件名的命名规则进行分割归并,比如 、

…… 或者是 FILE.1、FILE.2……FILE.n 之类的,值

得注意的是不同程序在分割时所采用的规则有区别,这就使得这些数据在交

换发生之后,如果不知道原切割程序就会给还原稍微带来点麻烦。不过相当

多数的程序有较多的参数或选项可以调整,可以参考各个程序的命令行参数

或在线帮助。世界上的支持UUCODE的程序不下上千种,列举是没有完的。

大部分情况下,被分割成小块的文件都含有section n of m of

或 Part n/m of 之类的标记,不同的程序,其“智能”有所不同。

有个叫做 Wincode 的 Freeware 内含一个 Winsort 功能,自动化程度略高

一些; 还有的程序是要求先把各个分段的 UUE 先简单地 COPY 在一起,然

后再自动解码;再不行还可以编几行小程序做点“预处理”。

FTPMAIL 是 UUENCODE 分段使用的一个典型例子,FTPMAIL 的优点是可

以用牺牲实时性来换取享用本地带宽,把传输耗时转嫁到 Internet 邮件系

统上。( 如果 CERNET 内部对接收邮件不计费的话,还可以起节约费用的作

用。) 通过 FTPMAIL接收的文件大多分割成多个文件,并且具有完整的邮件

头部分。比如:

Date: Monday, March 3, 1997 18:18:59 +0800

From:ftpmail<***********************.com>

To:***************

Subject: [Part 1/15] of uuencoded ftp:///

ftpmail-begin

begin 660

M35HJ:HK FE( ELKJK()kmk L JO IE EMCOJEDOJEODJOIJLKJDLJLJ

......

M_QX (#(_$FOKPFI_)#_RO {KDF_)O_FO WFO)WE_FO)_WEFO_WE)FO_)FOEF

ftpmail-end

还原的方法很多,如果使用的是 Microsoft Mail 之类的邮件客户程序

且总文件数目比较少,可以采用分别存成文件的方法,并按照一定的规则命

名,如 myfile.1、myfile.2……, 注意顺序不要错。 最后使用如 UUde-

code 95/96这样的命令行程序:(Usage: uudecode myfile) 即可, 这些程

序大多可以自动匹配文件名,找到相应的部分。

如果文件数目比较多,理想的方法是先将这些邮件存成一个大文件。比

如 Pegasus Mail 中先在邮件箱里面排序(这很重要),然后选上这些邮件,

再选择菜单Folder/Extract Message/Extract them all to a single file,

输入文件名,拷贝就完成了;Microsoft mail程序的“邮箱”*.mbx 本身就

是一个文件,其格式可以认为基本就是文本文件,只要新建一个逻辑目录或

邮箱,顺序放入这些邮件,对应的 mbx 文件就形成了。( 注意,Eudora 会

比较麻烦,它会将第一个文件中携带的数据直接解码到 Attach 目录中。)

上面合并出来的文件改其后缀为 UUE,最后一步就是解码。合并的数据

文件在每个UUENCODE分段中间都间杂着邮件头,但这些信息显然不是UUCODE

数据本体,遗憾的是很多知名程序都不能自动忽略掉它们。不过也有一些程

序可以通过命令行参数可以帮助识别,编一个很简单的小过滤程序也不费事。

这里推荐使用 Wincode,一个 16 位的Windows Freeware,具有很好的兼容

性,对我们现在讨论的情况非常适合。当前版本 2.7.3a,其地址是:

/snappy/

在各个共享软件网点也都可以找到。

--

扫除一切害人虫,全无敌...

※ 来源:·BBS 水木清华站 ·[FROM: 202.96.49.45]

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(6)──MIME/BASE64介绍

发信站: BBS 水木清华站 (Tue Feb 3 01:02:17 1998)

乱码大全(6)──MIME/BASE64介绍

MIME: Multipurpose Internet Mail Extensions

英国帝国大学计算机在线字典FOLDOC对 MIME 的解释为:“多部分( multi-

part)、多媒体电子邮件和 WWW 超文本的一种编码标准,用于传送诸如图形、声

音和传真等非文本数据。MIME 定义于 RFC 1341, 用 MIMENCODE 的方法将二进

制数据转换成为一种被称为 BASE64 的 ASCII 子集的字符的组合。”

Internet 上有专门讨论 MIME 的新闻组:。该新闻组的FAQ

可以从下面的网点获得:

/hypertext/faq/usenet/mail/mime-faq/mime0/

MIMENCODE 最早称为 MMENCODE,提出用 MIMENCODE 代替 UUENCODE, 是

为 UUENCODE 使用了一些字符在一些邮件网关(特别是那些转换ASCII 和 EBCDIC

码的网关)中造成传输障碍,(还有一些软件不能对所有 UUENCODE 的算法进行正

确解码而导致邮件的阅读困难),因此 MIME 被设计用于替代 UUENCODE,但是结

果是这些协议共存。

MIME/BASE64 的算法很简单,它将字符流顺序放入一个 24 位的缓冲区,缺

字符的地方补零。然后将缓冲区截断成为 4 个部分,高位在先,每个部分 6 位,

用下面的64个字符重新表示:“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop

qrstuvwxyz+/”。如果输入只有一个或两个字节,那么输出将用等号

“=”补足。这可以隔断附加的信息造成编码的混乱。这就是BASE64。

那么 MIME/BASE64 是什么样子呢?通常很多程序都做成每行70-80个字符,

由于我们前面已经说了组成 MIME/BASE64 的编码是 A-Z、a-z、0-9、+ 和 /,

那么这个编码很容易认出来,如:

UEsDBBQAAgAIAEapPiS/mrkHoQEAAEECAAAMAAAAYWNhZDd+dWUudHh0dVFRb5swG

HyPlP9Q5Iet

TUICzCUJASTiFuIQhwbHRJnUqmRsndqmVQO0CsK/fXbRVvVh+AV9vrvv7txunYiPV8rAW3n

33w5B

R9FAN3ld34Axr9OHIjtkt7wC3bmKHD+zznjteTGvjBnVFGCdxz265XW7dfI+ZVFyRjegO3hix8n

l

fGcdjeLqy/rGTp0Sj+Jp8Djho9oIWRSX0IYIwwmWbF4RHKYK0ByCaI9u4u3HukYZIvE32+fZyz

7L

含有 MIME/BASE64 编码的邮件,你查看它的源码时, 一般都含有:“This

is a multi-part message in MIME format.”这样的句子。 也可以被绝大多数

的 email 程序进行解码,包括 Netscape、MS Mail、Eudora等。 这些程序可以

正确识别邮件的正文,恢复 MIME/BASE64 编码的部分为正确的文字或夹带的二

进制文件。

如果这些文件不能正确被恢复,可以将邮件原文存成文本文件,改文件名后

缀为 .UUE,让 Winzip 自动识别并恢复。推荐使用 Winzip 6.3 SR-1 或更高的

版本。也可以将文件后缀改为 .EML , 由 Microsoft Mail 或 OutLook Express

打开,该软件也可以自动解码。另外很多网点,如 、

、 、

等都可以通过查询 MIME 关键字得到大量的小型应用

程序支持 MIME 的转换。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(7)──MIME/BASE64处理实例

发信站: BBS 水木清华站 (Tue Feb 3 01:02:46 1998)

乱码大全(7)──MIME/BASE64处理实例

但是,即使是正确的 MIME 编码也可能因为文本格式不规范而不能正确解码,

这个时候,你从 email 程序或 Hotmail 里面只能得到 BASE64 编码的乱码,而

不能正确解码。我们在 Pwindiws 95 中推荐使用 UltraEdit 5.0, 并以此为例

来讲处理过程。我们来看这样一封典型信:( 行号是为阅读清楚,不属于信的内

容)。这封信是根据我帮助一个朋友解码的实例改的。

01: From: "bluesea"

02: To: "=?gb2312?B?sKLEvg==?="

03: Subject: A test :)

04: Date: Sat, 3 Jan 1998 15:31:38 +0800

05: X-Mime-Autoconverted: from 8bit to BASE64 by id PAA06553

06: Content-Length: 222

07:

08:

ICAgIKGwwtLC67TzyKuhsaOs1/fV36O6Ymx1ZXNlYaOsy67Evsflu6pCQlOzydSxoaO7ttOt1N

og

09:

QkJT1tDXqtTYo6yw7w0K1vq8xsvju/qz9dGn1d+94r72yrnTw8jtvP65/bPM1tDT9rW9tcTKtbzK

10:

zsrM4qGjsb7OxNSt1NjT2suuxL7H5buqIEJCUw0KtcQgSW50ZXJuZXQgzNbC28f4oaO12N

这封信不能通过 OutLook Express 和 Winzip 恢复, 当然,我们还可以找

其他程序,或者其他的 email 程序自动恢复信的内容,我们假设这些条件不符

合,需要适当的手工恢复。我们能够认定信体是MIME/BASE64 编码,那么一定可

以找到相应的解决办法。首先备份你的信。然后进行下面的处理:

第一种方法,我们可以把原信的5、6两行换成下面的两行,注意第4、5行之

间不要有空行。

Content-Type: text/plain;charset="gb2312"

Content-Transfer-Encoding: BASE64

然后将文件名后缀改为 EML,再由 OutLook Express 打开。如果不是 GB汉字,

而像是 BIG5,只需将 "gb2312" 改为 "big5" 再试验。 如果你最终认定不是文

本,而是二进制文件;或者是明显的二进制文件,email 程序却不能还原成夹带

(Attached) 的文件,那么需要将信件中的 “Content-Type: text/plain;” 改

为 “Content-Type: application/x-download;”。

第二种方法,假如没有 OutLook Express,我们还可以借助 Winzip 6.3。

你只需在原信中,在 MIME 编码的那三行中间的任意位置加一个回车,把它搞成

四行,然后将文件后缀改为 UUE,再用 Winzip 6.3 打开。信体就会被正确解码。

说起来你可能不相信,觉得这个方法闻所未闻,像天方夜谭。这方法连我自己都

不信,但是实践证明是有效的。

最后,还差一点,就是原信第二行的内容:To: "=?gb2312?B?sKLEvg==?="

,这信是发给谁的呢?这是 email 程序中在标题运用 MIME/

BASE64 编码的例子。 我们请南极星 NJWIN 出山。NJWIN 1.58(1.6) 的 Option

有这样一项:Support Internet MIME encoding,选中此项,即刻可以看到中文。

在 Pwindows 95 中,如果用 Notepad 或选择了GB2312字体的 Ultraedit来

看信,那么,请不要选中 NJWIN Option 中 My Windows System - Simplified

GB 一项,而选择 Standard English/Western。这样的目的是让 NJWIN 的汉字

显示起作用。可以看到收信人这一行是:“To: "阿木" ”。

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(8)──Quoted-Printable

发信站: BBS 水木清华站 (Tue Feb 3 01:03:34 1998)

乱码大全(8)──Quoted-Printable

先认一认,一定很熟悉了,常见的被称为乱码的东西。 经常出现在email中,

这就是 Quoted-Printable,是 MIME 的另一种编码方式。

=A1=B0=C2=D2=C2=EB=B4=F3=C8=AB=A1=B1=A3=AC=D7=F7=D5=DF bluesea

=A3=AC=CB=AE=C4=BE=C7=E5=BB=AABBS=B3=C9=D4=B1=A1=A3=BB=B6=D3=AD=D4

=DA

BBS=D6=D0=D7=AA=D4=D8=A3=AC=B0=EF=D6=FA=BC=C6=CB=E3=BB=FA=B3=F5=D1

=A7

=D5=DF=BD=E2=BE=F6=CA=B9=D3=C3=C8=ED=BC=FE=B9=FD=B3=CC=D6=D0=D3=F6

=B5=BD

=B5=C4=CA=B5=BC=CA=CE=CA=CC=E2=A1=A3=B1=BE=CE=C4=D4=AD=D4=D8=D3=D

A

=CB=AE=C4=BE=C7=E5=BB=AA BBS =B5=C4 Internet =CC=D6=C2=DB=C7=F8=A1=A3

在所有邮件处理的各式各样的编码中,很多编码的目的都是通过编码手段使

得七位字符的邮件协议体系可以传送八位的二进制文件、双字节语言文字等等。

Quoted-Printable 也是这样一些编码中的一个, 它的目的同样是帮助非 ASCII

编码的信件传输通过 SMTP。Quoted-Printable 编码是字符对应的编码,每个未

编码的二进制字符被编码成三个字符,即一个等号和一个十六进制的数字,如

“=A8”。1:3,这种编码效率实在很低。有关 Quoted-Printable 详细技术信息

可以参考 RFC 2045。

一些 email 程序,它们不能正确解释这种编码。 最方便的方法是使用 (如

Forward 到) 支持Quoted-Printable 解码的 email 程序如 Netscape、Eudora、

OutLook Express 和 Calypso 2.4 等。Calypso在将邮件另存成纯文本的时候,

甚至全都采用的是 Quoted-Printable 格式。 Winzip 仍然是最方便的解码工具

之一。

用 Winzip 对 Quoted-Printable 解码的关键有两条:(1) 在email 信头中

检查、添加这样的两行,如果没有信头,那么这两行就构成信头,比如这两行可

以添加到本文开始的那段例子前面。

Mime-Version: 1.0

Content-Transfer-Encoding: quoted-printable

(2) 信头中间不要空行,信头和信体之间要有一个空行。这样形成的文件,改后

缀名为 UUE,即可双击启动 Winzip 得到解码。email 中的标题或收发信人等信

头位置带有的 quoted-printable 编码都可以被一起解决。满足上面条件的信件

也可以改后缀名为 EML, 用 OutLook Express 来解码,类似这样的标题:

Subject: =?gb2312iso-8859-1?Q?=D4=DA=C7=E5=BB=AA=B5=C4BBS=C9=CF?=

Subject: =?gb2312?Q?=D4=DA=C7=E5=BB=AA=B5=C4BBS=C9=CF?=

也可以被 OutLook Express 正确复原。

与 BASE64 不同的是 Quoted-Printable 编码不处理原文中的换行,因此要

注意一个汉字是由两个字符组成的,会对应于 Quoted-Printable 编码的六个字

符,如果经过重新编辑并且换行不当则会造成半个汉字的乱码,需要相应调整。

除此之外,还有很多方法用于解决 Quoted-Printable 的解码,例如著名的

Quick View Plus 4.5 ( ) 也支持 Quoted-Printable 的

解码和直接阅读。有些网点以在线 CGI 方式提供Quated-printable 解码,例如:

/~yosita-h/jap/

在Unix中,被 BASE64 或 quoted-printable 编码的邮件可以用metamail等

方法来解决。下面这份程序是本 BBS 的 jyj 编写的,现在收录在 Networking

板的精华区中,用于quoted-printable解码,适合于 Unix/DOS/windows。 本文

引用时对源程序的版式做了一些调整。

#include

void main(int argc, char * argv[])

{

FILE * fp; char ch, ch1, ch2; unsigned char hz;

fp = fopen(argv[1], "rt");

for (;;) {

ch = getc(fp); if (ch == EOF) break;

if (ch == '=') {

ch1 = getc(fp); if (ch1 == 'n') continue;

ch2 = getc(fp);

hz = (ch1>'9'?ch1-'A'+10:ch1-'0')*16+

(ch2>'9'?ch2-'A'+10:ch2-'0');

putchar(hz);

}

else putchar(ch);

}

fclose(fp);

}

在 /sakura/d_net_ 可以获得 Quoted-

Printable 编码和译码的 Pascal 源程序。很多支持 MIME 编解码的程序都提供

了 MIME BASE64 或 Quoted-Printable 的源程序。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(9)──中文HTML与Netscape

发信站: BBS 水木清华站 (Tue Feb 3 01:04:01 1998)

乱码大全(9)──中文HTML与Netscape

一个好的中文网点,应该能够做到让大多数浏览者能够舒服地阅读网页,退

而求其次应该是让访问者可以读懂。但是, 中文 Web 的浏览环境是一个复杂的

多维空间。对于上面的要求,即便是后者也并不是每个网点都做到了。为了迁就

系统功能的某个设置,往往会忽略另一个设置,网点的设计者需要从很多选择中

进行折衷。

中文 Web 的浏览环境这个复杂的多维空间的组成是什么呢? 我想至少包括

这样几个因素: (1) 操作系统及其版本、语种;(2) 中文平台的种类; (3) 浏

览器的品种及其版本。由上面的几个因素相互组合,可以形成几十种浏览环境,

它们在浏览同一个网页时的效果都会有所不同。 我们有理由认为: 由中英文

Windows95/NT、常见中文环境(NjWin、Cstar、Richwin)和常见浏览器(Netscape

3.x/4.x、中英文IE3/4)构成了中国 Web 访问的主要浏览环境。

顺便说一句我们曾经多次提到的一个问题,很多网页的设计者都在追求中文

文本的自动折行,但是只要你承认上面的浏览环境的构成因素,那么请不要费劲

了,这个特性不仅取决于网页的制作,还取决于浏览环境。当然,还有无数自信

的网页设计者在设计其他特性时也是在自己那里试验通过后就认为一切都大功告

成了。

在上面提到的浏览环境中,常见的汉字乱码有两种。这两种情况依靠调节浏

览器的各项参数和选项是无法克服的。

一、所有的汉字都显示成矩形的小方块。比如:

□□□□ Windows 95 □□□□□□□□□□□□,□□□□ 70% □□□□

□□ 25% □□□□□□□□, Microsoft □□□□ Netscape □□□□...

(实际的方块是瘦一些的矩形,是 Windows 的某种字体。) 这种情况的发生有这

样四个条件: (1) 浏览网页用的是 Netscape Communicator(Navigator) 4.x 版

本;(2) 使用的操作系统是英文 Windows; (3) 使用的汉字平台是中文之星或

RichWin; (4) 出现这种情况的网页一定使用了包含“gb2312”的标记:

没有遇到过这个问题的人也许觉得不可思议, Netscape 会有这么低级的问题。

但是事实上却是如此的。解决这个问题的方法──是破坏上面四个条件的任何一

个。即 (1) 换用 Netscape Navigator 3.x 或 Microsoft Internet Explorer

3.x/4.x;(2) 换用 PWindows (95);(3) 使用南极星 NJwin 1.5x/1/6x 做中文

环境;(4) 去掉网页中的 gb2312 标记。下面对(3)和(4)说明一下:

在 SMTH 中,yuhj 是首先提出用 NJwin 来解决这个问题的人。他在述及这

个问题时曾提到:“具体我没有去研究过,总之用了njstar英文win95+Netscape

4.X 看一般中文网页都没有问题了。 njstar 使用中文 95 模式主要是不要它用

自己的字体, 那个字体比较难看, 因为是和 richwin 同时运行, 这样屏幕上

显示的是 richwin 的 truetype 字体。 而 njstar 在前面提供中文识别。这里

richwin 换做 cstar 应该一样有效,没有其他什么要求。”

对于上面的(4),就涉及到一个主页制作的问题。中文 HTML 尚无标准可循,

所以我个人认为让现有浏览环境的大多数人可以读懂应该是网页设计者的主要目

标。“charset=gb2312”的用法是 Netscape 首先提出的 (Microsoft 开始采用

的是gb_2312-80),那么这种用法到底是用,还是不用? 这样用的好处是能够让

Netscape 浏览器在阅读网页的时候支持汉字自动折行。 至少出现乱码的读者和

英文 Windows/IE 的用户无法享受这个特性。因此 charset=gb2312 不如不用。

或者在主页明确提示用户可能会发生的麻烦及其解决方法。

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(10)──中文HTML与MSIE

发信站: BBS 水木清华站 (Tue Feb 3 01:04:36 1998)

乱码大全(10)──中文HTML与MSIE

二、所有的汉字都是不可辨认的乱码,有点像在英文环境下阅读中文时没有

启动中文环境似的。这种问题都出现在 中文 Internet Explorer 中,造成这个

现象的具体原因有两种情况,我们先说第一种。因为无法用 GB 汉字来表达那些

乱码,下面就给出这样的例子,一个能够产生乱码的 HTML 文件。

¡°ÂÒÂë´

óÈ«¡±£¬×÷Õ

ߣºbluesea£¬Ë®Ä¾Ç

廪BBS³ÉÔ±¡£

看这个(类)文件会导致汉字无法识别的条件是使用的是中文Windows 和中

Internet Explorer,呵呵,很多人因此骂 Microsoft 弱智。很多网虫指出这是

字符的 Unicode 表示。但是有一点,这些字符在 Windows 字符集中可以方便

用于表示法语、德语等使用特殊拉丁字母的文字。这些字符到底是这些语言还是

汉语,如果遵从 Microsoft 的解释方法, 将有可能在同一个中文的网页中同时

表达。

我们可以通过 IE 浏览器的菜单“查看/源文件”功能,看看HTML 源文件中

是否包含上面这样的“汉字”,来判断乱码是否属于这个情况。解决这种乱码的

只有两个途径:(1) 换用 Netscape 3.x 或 4.x 浏览器;(2) 在英文 Windows

下面使用英文 IE 3.x,通过中文之星或 Richwin 来阅读。

对于有保存价值的网点,可以通过手工的方法进行一下转换。方法是首先安

装一套 Netscape Navigator Gold 3.x 或 Communicator 4.x;对于你需要的网

点先用浏览器保存(Save as)到本地,然后用 Netscape Composer ( Netscape

简易网点编辑器 ) 读入这个网页,然后选择菜单

“ View / Encoding / Simplified chinese (GB2312) ”,然后再保存。

这个转换方法实际上也指出了,当你用 Netscape Composer 制作一个中

网页的时候,应该怎样设置使得用 中文MSIE 的用户也能够阅读这个网页。这

实际上又一次为我们提出了网点制作的一些问题。显然上面的乱码一定是由

HTML编辑工具产生的。 很多网页编辑工具,不像 Netscape Composer 这样

存在一个语言的设置,例如 Adobe PageMill 2.0 等工具,你在里面输入中文,

它无论如何都会存成上面的样子。这样的工具显然就不适合来制作中文网页和网

点。

因此我们在选择一个新的工具(尤其是所见即所得的设计工具)的时候,不妨

多花点时间去找一找、试一试它的相关选项,然后输入几个汉字并存一个HTML

文件,看看中文是不是肉眼可以识别的,如果不行就只能放弃。当然你如果赌气

偏不让那些用中文 IE 的人来看你的网点,那么另当别论。

第二种情况,HTML源文件中,汉字是肉眼可见的,为什么中文 IE 看上去

还是乱码呢?这是因为网页的作者没有在 HTML 文件中正确标识网页的语言

类型,如在英文 Windows 中使用 Frontpage,网页会自动被加上iso-8859-1

标记,如:

脊柱是我们这种生命的重要特征,在此基础上我们才有了光芒的智慧和

丰富的情感。上帝赋予我们自由的意志,同时也赋予我们选择的重担。

这样的网页就会是导致中文 IE 不认中文的后果,只需将 “iso-8859-1” 改成

“gb_2312-80”、“gb2312”(会产生本文上一篇导致的问题) 或者干脆去掉这

一行。具体选择什么方案需要 WebMaster 进行权衡。 当然,这个改变只能由

页的制作者来做,阅读网点的人是无法改变 WWW 服务器上的内容的, 只能

将源文件存到本地,去掉上面的标记再将就地看,或换 Netscape 浏览器。

尽管 Netscape 3.x 不会出现上面两篇文章提到的两种类型的乱码,但是除

了汉字的乱码外, IE 和 Netscape 浏览器在很多方面都表现出显著的差异,

是网点设计的千差万别,决定了我们单纯使用一种浏览器显然不如同时拥有两个

浏览器更方便一些。有的网友耽心它们之间有冲突是不必要的,除了你自己拿注

意定下谁是缺省(默认)浏览器外,它们之间相安无事,无论是Netscape 3.x/4.x

还是 IE 3.x/4.x。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(11)──常见文件格式

发信站: BBS 水木清华站 (Tue Feb 3 01:05:05 1998)

乱码大全(11)──常见文件格式

在乱码大全之(7)中,我们提到了 email 在进行文件编码的时候要进行适当

的说明,比如:Content-Type: text/plain;charset="gb2312", 而如果是二进

制文件则需要“Content-Type: application/x-download”或其他说明。也就是

说 email (客户)程序如何进行(正确地)解码或恢复 Attached 文件, 取决于发

送 email 的程序如何组织 email 的全文。当它们配合不当的时候,乱码就会发

生。

还有很多情况,二进制文件没有经过任何编码就传到 email 中了, email

程序不仅没有还原二进制文件,而且传来的 email 连文件名都没有带。例如:

MZ....莦S髛)沈ㄣs羖帶h=)膄浉鄐Hb戸El傽1gf浉鄐ore膏934sLLJD………………

……………………………………………………………………………………………

这种情况现在是比较少了,但是并不是没有。最好是让对方重发。在你思考

如何处理的时候,先判断它们是什么类型的文件有助于你采取合适的措施。由于

文件类型是无法列全的,我们只能举一些常见的例子。这些在其他场合,对于我

们进行文件的恢复、判断都有一些帮助。

这些乱码在 email 中并不是有规律地显示的,而是一长串的乱码。 只有碰

巧遇到回车、换行符号才换行显示。我们至少需要辨认的是这些文件的开头:

文件类型 开头的字符 开头字符十六进制表示

------------------------------------------------------------

ARJ (ARJ 压缩文件) (60 EA 26 00)

AVI (Windows 电影) AVI

BMP (Windows 图片) ? BM... (42 4D)

DOC/XLS/PPT 邢.唷... (D0 CF 11 E0 A1)

(Word/Excel/PowerPoint)

EXE/DLL/OCX MZ... (4D 5A)

(可执行文件/动态连接库)

GIF (图片)

JPG (JPEG 图形) (FF D8 FF E0)

HLP (Windows Help) (3F 5F 03 00)

MID (Midi文件) (4D 54 68 64)

MP3 (MPEG Layer-3文件) (FF FB 80 44)

PS (Adobe Post Script) %!PS-Adobe-3.0

(PS 在形式上是文本,可以直接存下来为 PostScript 程序所读/打印

在 Windows (95) 中可以用 /~ghost/ 下面

的 GSView and GhostScript 来阅读和打印)

RAR (RAR 压缩文件) Rar!...

( 各地 TUCOWS 站点可以下载 WinRAR )

RTF (RTF 文件) {

(RTF 在形式上是文本文件,可以直接存下来为Word/WordPad 读取)

WAV (声音文件) WAVEfmt

ZIP (PKZIP/WINZIP) PK... (50 4B)

辨认文件的开头并不能 100% 地鉴别一个文件的类型,但是对于我们常见的

情况往往是有效的。 如果 email 程序没有还原这些文件,那么要小心的是编辑

程序对于回车换行的处理会造成文件的损毁。在 Unix 中,文本文件的换行只有

一个换行,而在 MS-DOS/Windows 中由回车换行 (0Dh, 0Ah) 两个符号完成。二

进制文件中根据概率将随机存在 0Dh、0Ah、0D0Ah 这样的符号, 不同的文本编

辑程序在另存的时候处理方式是不同的,有的是统一变成 0D0Ah,这样,原来的

二进制文件将被破坏。

如果你用的是 Microsoft Mail/OutLook Express,可以将邮件直接存成EML

文件,再用 UltraEdit 在 Hex 方式去除信头; 如果是其他的 email 程序,可

能要去寻找存放 email 目录的文件,从中截取相应的部分。如果是在 Hotmail

等 Webmail 中发现这样的情况, 从剪辑板拷贝信体一般是不行的,应该设法将

email Forward 或 reply 到其他信箱再试验。 总之,这种情况下恢复二进制文

件需要格外注意的就是信息能否完全保存,没有固定的方法,也并不一定能够恢

复成功。

如果恢复的二进制无法确认它的类型,可以借助 Quick View Plus 4.5

( ) 来判断。除了柯达图象等少数文件外,大多数文件格

式都能够识别。

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转厮厩寤?BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(12)──数据加密

发信站: BBS 水木清华站 (Tue Feb 3 01:05:40 1998)

乱码大全(12)──数据加密

很多数据是在加密后通过 email 等方式在网络中传送。 围绕本文识别乱码

的主体,数据加密本身并不是本文的讨论重点。文本只是通过简单的例子,给出

识别方法和基本概念。旨在让看到乱码而莫名其妙和不知所措的初学者可以初步

辨认出新闻组或 email 中常见的加密形式。加密的方法很多,通过给 ZIP 或者

ARJ 加密码也是信息加密的很好的方式。

本文仅就 Crypt-o-Text 和 PGP 做最简单的概念性的描述。

下面的信体就是 Crypt-o-Text 的一个例子。

********************** START Crypt-o-Text **********************

CoT/0124/03/7/284

Cm-HelnmyEBAMCu-vVCIKYZZnlB8uJDnd4VwwK-aNh9NJB40fcA0by8E54CnZ2kns

CZfI9ojAX9oQqXZsjNm9EZR00SD8F2kuhAMJCQNrBczC1RAzFILHJ4eeC+Eo+APn8

CykffKk3eE2JSbq1jELtndghhnEQ2OotH5udGiq7V+DrojxDQWLhZKACTARdaWXpf

CeO6hemLrvrlvRoPTBMQoHVe-ZJrcVoJ9GgqSf90rugDnSrrvKutDPTTiFjLAeduQ

CYuJIMw+bWCeI0X8+eY9vnKASxR3oXf9lPqAqYUHzGOzum-xM7O-9Xwn99AQjRXGm

CNAVdrpvV35wxk5WQ7Q7rOEfxEA8YoMTIKdG6SDZXiBB3Z3Q64yP9dJonGSmRpFoR

ClAI4I7I-

CoT/11697

********************** END Crypt-o-Text **********************

Crypt-o-Text 是 Windows 3.x/95/NT 下常用于 email 信息加密的一个程

序。简单易用。常用于短小的文本加密。加密者通过给 password 对一段信息编

码,通过剪辑板把加密的信息拷贝到 email 程序中发送; 信息的接收者用同样

的密码进行解码。你可以用 bluesea 作密码解开上面的信息。Crypt-o-Text 的

地址在: /users/rsavard/

我们在阅读 USENET 和 WWW 的时候, 经常会遇到另一种加密体制,发信人

要提供“公共钥匙”和“签名”,这就是著名的基于 RSA 算法的 PGP 加密方法。

下面的几行就是 PGP PUBLIC KEY 的样子。( 此 PGP PUBLIC KEY 不代表任何人

的,仅仅是一个示例)。

-----BEGIN PGP PUBLIC KEY BLOCK-----

Version: 2.6.2

mQBtAzEd6JQAAAEDAMSnkUzKxEtwD7fDvzeopjGv6AJQoSlX4cgjSJzXJMGVtlWO

qZYh6DVxY1Bd1/0dcGg7sbPDqOvUL07YNySjXzvYD7QiUO+NMilDnlKKO2sBUmg/

JR+vat690cF/nixwgQAFEbQxQ2hyaXN0b3BoZXIgRC4gR29yaSA8Y2dvcmlAaXNl

bmdhcmQuc3RhbmZvcmQuZWR1Pg==

=BsQW

-----END PGP PUBLIC KEY BLOCK-----

PGP (Pretty Good Privacy) 是一种免费的不需要事先传递 password 的高

强度的加密方法,是一个基于 RSA“公钥加密体系”的邮件加密软件。是一种几

乎最流行的公钥加密软件包。那么,不传递密码如何能够让收信人能够解密解码

呢?这就是关键所在:认识、了解 PGP需要首先了解 RSA“公钥加密体系”的最

基本的概念和思想。下面就是对这个概念的最简化的叙述。

PGP 软件可以产生一对互补的、称为“钥匙”的数据,分别称为“公钥”就

“私钥”。公钥和私钥不能互相由对方计算出来。由私钥加密的信息,可以并且

仅可以由与之对应的公钥解密;而由公钥加密的信息,可以并且仅可以由与之对

应的私钥解密,这就是互补性。所有的人可以通过可靠的方式,比如自己的 WWW

网点或其他公证方式向所有的人公开他的公钥;并且所有的人都仅仅由自己保存

私钥。

假设有发信人 A 和 B:当 A 要想向 B 发送加密信息时,A 使用 B 的公钥

加密信息并将信息传送给 B,显然只有持有 B 的私钥的 B 才能够解密这个信息。

另外, 当 A 向公众发布信息时,如果用自己的私钥加密一段特殊的信息,那么

所有的人都可以用 A 的公钥来解密该信息,从而确认该信息确实是由 A 发出来

的。这就是 PGP 软件最基本的两种用途──信息加密和身份确认。

有关 PGP 的详细信息参见 , ,

以及 USENET 中含有 pgp 的讨论组,如、、

ce 和 s 等等。在本 BBS

的 Hacker 讨论区的精华区以及 Security (系统安全) 讨论区都有关于 PGP 常

见问题的中文版。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(13)──BinHex

发信站: BBS 水木清华站 (Tue Apr 14 15:02:10 1998)

乱码大全(13)──BinHex

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

***************

BinHex 编码是 Macintosh 计算机上用可打印字符表示/传输二进制文件的

一种编码方法。目前通用的 BinHex 4.0 的这种编码的文件一般以 .HQX 为后缀

名。 早期的 BinHex2.0 编码文件一般以 .HEX 为文件名后缀。 BinHex 4.0 是

一种带有 CRC 校验的编码。在一些 email 程序中 (如使用最广泛的邮件程序之

一 Eudora ),BinHex 编码是用于 Attach 二进制文件的方法之一。

但是有很多广泛使用的 email 程序不支持这种格式,如Microsoft OutLook

Express 接收 Eudora 发来的以 BinHex 夹带的二进制文件时,只能分辨出夹带

的文件,却不能正确解码。 类似的情况需要将信件 Forward 到一个可以解析相

应格式的邮件程序中或对邮件原文进行人工处理。

BinHex 编码是这个样子的:

(This file must be converted with BinHex 4.0)

:#dC*@&"A58iZ@NP3!("D59"`@NP3%$)'eC8%X$""3!!J!)!0e44b1

NrPJL%N"d!!!,4NPB8&G*6Lj&@%AX[AeJ8dA@1$c*6@l5I0`@U18lK)p

') DK8#Y3MHLKmPJ+B8T&LJ3"&D6*0@A#KKSp$NP[UeUl$2IS$S2Z[(ZL"&!LL

......

3!)+bfS!!!!!"'59K39dP1,N9B43F!1J"dH(#V#,jTFELAU2ql`i-5eAr

iVS(5RqX,rF9@h&M(%R)a@8flJFd'0dpD@i$pVJ"FFBTf'@a3V1Sb8%X&"J

"!!%!G`$Y"+D!:

它的开始行必定是“(This file must be converted with BinHex 4.0)”,

整个数据块以冒号开始、并以冒号结尾。使用 BinHex 编码的邮件一般应该在信

头中含有类似下面这样的说明(假设Attach文件名为的话):

Content-Type: application/mac-binhex40; name=""

Content-Disposition: attachment; filename=""

将含有数据块的文件更名为 .HQX, 即可双击该文件启动 Winzip 进行解码。

()。至此,我们不得不赞叹 winzip 在解码工作中的无以

伦比的表现 ( 其支持的后缀名有:*.zip、 *.z、 *.gz、*.tz、*.taz、*.tgz、

*.lzh、*.arj、*.arc、*.tar、.exe(ziped)、 *.uu、 *.uue、 *.xxe、*.bhx、

*.b64、*.hqx )。遗憾的是 Winzip 对 BinHex 的解码并不总是成功的。在测试

某一封Eudora发出的 BinHex 编码信件的时候,Winzip 不能解码。

一些软件支持BinHex解码,它们同时大多还支持一些其他编码。如 StuffIt

Expander (ftp:/// 或找其他共享软件网点)、 Fastcode32

(/utilities/) 等,一些网点 ( 如

/how-to/support/unix/hqx/unhqx.c)还提供了BinHex

解码的源程序。

BinHex 4.0 是由 Yves Lempereur 在 84-85 年开发的,这是目前最通用的

版本,在 Mac/Unix/PC 上广泛运用。Yves 还开发了一个与 MacBinary ( Mac上

面的另一种编码) 兼容的 BinHex 5.0 版本。 BinHex 5.0 与 BinHex 4.0 不兼

容,它们是两种截然不同的编码。 BinHex 比一般编码耗费更多的字节,并且跨

平台的解码工具比其他编码少。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(14)──Unicode(1; 简介)

发信站: BBS 水木清华站 (Tue Apr 14 15:03:06 1998)

乱码大全(14)──Unicode(1; 简介)

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

***************

8 位字符集只能容纳 256 个字符,比如 Latin-1 (ISO 646) 包括了英语、

数字、常用标点和常见的一些欧洲字符。但是它们无法很好地承担在世界范围内

进行信息交换的重任,因为它们没有足够的空间来容纳其他语言上万的字符。这

包括:日语(JIS)、汉语(GB、BIG5)、韩语(KS)、印度语(ISCII)等等。

1993 年,ISO 10646 (Universal Character Set,USC-4) 诞生,它使用了

4 个字节的宽度以容纳足够多的相当可观的空间,但是这个过于肥胖的字符标准

在当时乃至现在都有其不现实的一面,就是会过分侵占存储空间并影响信息传输

的效率。 与此同时,Unicode 组织于约 10 年前以 Universal, Unique 和

Uniform 为主旨也开始开发一个16 位字符标准, 为避免两种 16 位编码的竞争,

1992 年两家组织开始协商,以期折衷寻找共同点,这就是今天的 UCS-2 (BMP,

Basic Multilingual Plane,16bit) 和 Unicode, 但它们仍然是不同的方案。

详细的信息参见:

/

/info/DTJB02/

在统一方案中集成不同语种的编码并不容易。GB/BIG5/JIS 原本可能在同样

的编码位置是不同的字符,Unicode 对它们的融合和实现必须通过额外的映射表,

这就与英语字符的使用产生了很大差距,对于汉语的使用,Unicode 还有很多没

有解决的问题,Universal, Unique 和 Uniform 的道路还依然漫长。(相关内容

可以参见 /~c-tsai4/,本人并不

全部同意其观点)。

无法统计有多少种情况使得汉字成为乱码。数十种编码以及规范的或不规范

的实现形式、不同的 email 客户程序、不同的 SMTP……,Unicode 也不例外。

和 Unicode 有关的汉字乱码有两类:一类是由 Unicode 编码的汉字,它可以通

过一个码表将 Unicode 转换成 GB 或 BIG5;另一类是转换码产生的乱码,由于

Unicode 编码是 16 位编码,因此它和很多只能使用 US-ASCII 编码的应用程序

不兼容,因此产生了对 Unicode 进行各种转换的编码, 以满足不同场合的需要。

具体到产生乱码的编码形式,一般有两种,即: UTF-7 和 UTF-8。

我们将先解决这两种转换码的问题,然后再讨论 Unicode 与 GB、BIG5的转

换,最后讨论 HTML 汉字编码与欧洲字符表示、Unicode 转换码之间的关系。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(15)──Unicode(2; UTF-7与汉字乱码)

发信站: BBS 水木清华站 (Tue Apr 14 15:05:19 1998)

乱码大全(15)──Unicode(2; UTF-7与汉字乱码)

UTF,Unicode 转换码, 是 Transformation Format of Unicode 的缩写。

Microsoft IE 4.0 和 OutLook Express 的中文版本把它译成“通用字符”,联

想到 Microsoft(中国)的“专家”们能够把uuencode翻译成“取消编码”,并把

“plug & Play monitor”翻译成“插头和播放监视器”, 这个“通用字符”就

算是可以接受吧。

UTF-7:A Mail-Safe Transformation Format of Unicode(RFC1642)。这是

一种使用 7 位 ASCII 码对 Unicode 码进行转换的编码。 它的设计目的仍然是

为了在只能传递 7 为编码的邮件网关中传递信息。 UTF-7 对英语字母、数字和

常见符号直接显示,而对其他符号用修正的 Base64 编码。符号 + 和 - 号控制

编码过程的开始和暂停。所以乱码中如果夹有英文单词,并且相伴有 + 号和 -

号,这就有可能是 UTF-7 编码。例如有这样一封邮件(行号是后加的):

1: From: "bluesea"

2: Subject: =?utf-7?B?K2JVdUwxUS0=?=

3:

4: +IBxOcXgBWSdRaCAd/wxPXIAF/xo-bluesea+/wxsNGcobgVTTg-

5: BBS+YhBUWDACayKPzlco- BBS+Ti2PbI99MAJnLGWHU5+PfU6ObDRnKA-

6: +bgVTTg- BBS +doQ- Internet+i6iLulM6MAI-

我们需要在原信头添加下面的信息:

MIME-Version: 1.0

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

注意,上面两行加在原信的第三行处,与原信头不要留空行。然后将被编辑的信

件另存为 *.eml 文件,用双击它启动 OutLook Express 即可获得原信的内容。

同时这里也提醒一下,如果你拥有支持 UTF-7 编码能力的邮件程序, 在用它发

信的时候,尽量不要使用这个编码,以免使对方不知所措。

一个不错的汉字代码转换软件: MView Convert 可以把转换 UTF-7 编码的

文件转换为 GB 或其他编码的文件。它的下载地址是:

/cgi-bin/search?query=

/software/ms-win/convert/

/software/ms-win/dics/

/~cheung/

ftp:///pub/software/ms-win/convert/

...

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(16)──Unicode(3; UTF-8、Unicode与汉字乱码)

发信站: BBS 水木清华站 (Tue Apr 14 15:11:21 1998)

乱码大全(16)──Unicode(3; UTF-8、Unicode与汉字乱码)

UTF-8, A Transformation Format of Unicode and ISO 10646 (See:ISO/

IEC 10646-1:1993 AMENDMENT 2 (1996). UCS Transformation Format 8(UTF-8).

Also See RFC-2044)。

很多应用程序不能直接处理 Unicode 或 UCS-4/UCS-2 中的 16(32) 位字符。

如 Unicode 中含有的 x0、 等字符将不能直接用于文件名或 C 字符串等等。

UTF-8 编码进行了这样的处理:它保持 US-ASCII 字符为 US-ASCII, 而其他编

码要保证高位是 1,在编码序列中还包含了码长信息。UTF-8 是一个不定长度的

编码。这样编码的结果是在编码序列中,所有的 US-ASCII 码原来也一定是 US-

ASCII 码。(具体意义和方法详见上述资料)

例如下面的邮件将在不支持 UTF-8 编码的邮件程序中显示成乱码:

1: From: "bluesea"

2: Subject: =?utf-8?B?5rWL6K+V?=

3:

4: 鈥滀贡鐮佸ぇ鍏ㄢ€濓紝浣滆€咃細bluesea锛屾按鏈ㄦ竻鍗?

5: BBS鎴愬憳銆傛

除了编码中夹带零星的英语单词可以帮助我们判别以外,没有更明显的标志帮助

我们识别它是 UTF-8 编码。只能通过猜测和试验来进行。 假如我们猜测它属于

UTF-8,那么我们需要在原信头添加下面的信息:

MIME-Version: 1.0

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

注意,上面两行加在原信的第三行处,与原信头不要留空行。然后将被编辑的信

件另存为 *.eml 文件,用双击它启动 OutLook Express 即可获得原信的内容。

同时这里也提醒一下,如果你拥有支持 UTF-8 编码能力的邮件程序, 在用它发

信的时候,尽量不要使用这个编码,以免使对方不知所措。

一个不错的汉字代码转换软件: MView Convert 可以把转换 UTF-8 编码的

文件转换为 GB 或其他编码的文件。它的下载地址参见 UTF-7 文。

无论 UTF-7、UTF-8 还是我们前面提到的 MIME 或其他什么编码造成的乱码,

乱码明文提供的信息未必都是完整的。其实信件的全部内容并没有完整地显示在

邮件程序的信体显示窗口中。不同的邮件程序可以通过不同的方法 (如 OutLook

Express 是通过选择“属性”/“详细资料”/“邮件的源文件”) 获得的邮件的

完整信头,那么我们需要的编码信息往往就在信头中。

上面我们先后解决了 UTF-7、UTF-8 这两种转换码的解码。最后,我们再解

决 Unicode 与 GB、BIG5 的相互转换。上面例子提供的信息用 Unicode 表示将

是这样的(实际上不应该有换行,只是为观察方便而加上):

.Nqx.Y'Qh ..O... b l u e s e a.l4g( . . B B 0.k"

徫W( B B SN-弆弣0.g,e嘢煆}N巐4g( . . B B S v? I n t e r n e

杩庡湪 BBS涓浆杞姐€傛湰鏂囧師杞戒簬姘存湪

6: 娓呭崕 BBS 鐨?Internet璁ㄨ鍖恒€?

t嫧嫼S:0.

可以看到,Unicode 中,所有的字符都是 16 位的,包括所有的 7位 ASCII

码都被扩充为 16 位。(注意,高位扩充的是零 x0,上面显示成空格)。这样的

代码不再属于传统意义上的文本文件。这些代码可以使用我们介绍的 MView

Convert 软件转换成为 GB、BIG5 或其他汉字编码。注意区分转换选择中 UTF-7、

UTF-8 和 Unicode。

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

***************

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(17)──Unicode(4; HTML与Unicode)

发信站: BBS 水木清华站 (Tue Apr 14 15:14:25 1998)

乱码大全(17)──Unicode(4; HTML与Unicode)

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

***************

在 HTML 中,语言的国际交换也面临很多新的问题。可参见RFC2070,标题:

Internationalization of the Hypertext Markup Language。本文涉及的问题

只能说和 Unicode 沾边,主要为澄清一些通常我们容易混淆的概念。

为了信息的交换,首先必须统一信息的表示。 因为高于 127 的那些字符在

ANSI 或 ISO Latin-1 (8859-1) 中可能表示一些欧洲字母, 而在一些双字节编

码中又可能和相邻的字符一起用于表示汉字或其他符号,这也就引起了歧义。首

先被确定下来的就是扩展字符在 HTML 文本中的表示方法。

第一种方法是使用:“Ampersand, Crosshatch, ISO decimal code,

Semicolon (与号、井号、数字和分号)”序列,例如带重音符号的字母 a,其编

码是十进制 224,这样在 HTML 中表示为 à

第二种方法是使用:“Ampersand, Mixed-case name, Semicolon(与号、命

名和分号)”序列,例如带重音符号的字母 a ("a" with grave accent), 可以

在 HTML 中表示为 à 有关这些字符的命名列表,参见 RFC2070。

我们搞清楚了欧洲字符在 HTML 中的表示,就很自然地回到 HTML 中的著名

的汉字乱码问题:当 charset=iso-8859-1 时,汉字在 Netscape 和中文 IE 中

的显示不同,中文 IE 显示为乱码。很多人指出 Netscape 使用的是 Unicode,

那么到底是不是呢,我们来看这个例子:

我们首先看汉字“啊”,区位码1601;GB编码 0xa1b0;即:161,176。在字

符集中,° 是单位“度”(小圆圈)的符号,¡ 是倒写的叹号。我们编

写下面的 HTML 文本。

°¡ °¡ 啊

在中文 IE4.0 中,我们看到的是两个小圆圈、两个倒写的叹号和一个“啊”字,

而在PWidnows 95 环境中 Netscape 显示的是三个“啊”字。 我们用 Netscape

Composer 编写网页,选择 iso-8859-1,“啊”字将被编码为 °¡ 可

见这样出现的汉字,并不是 Unicode,而仅仅是把一个汉字简单地分成了两个

洲字符来表示。在这个情况下,Netscape 分不清汉字和欧洲符号。

Netscape Composer 支持用 Unicode 转换码来制作网页。 我们选择字符

UTF-8 并在 Composer 中输入一个“啊”字。结果在 HTML 中出现的是“掳隆”,

一个汉字在UTF-8中不可能占据 4 个字节。我们对生成的 HTML 文件用

Netscape

Navigator 显示,结果全是“啊”,而用 IE 4.0 显示的是一个小圆圈和一个倒

写的叹号。可见 Netscape 的显示结果有问题。这里特意手工编写了一个的

UTF-8 转换码的 HTML:

UTF-8姹夊瓧娴嬭瘯 (Hex: E6 B1 89 E5 AD 97 E6 B5 8B E8 AF 95)

并且我们用 IE4.0 顺利地看到了“UTF-8汉字测试”这几个字。遗憾的是不论你

选择什么字体,而 PWindows 95 下的 Netscape 4.05 总是显示一些小方框和

“UTF-8”。 直到我们启动 NJWIN 选择“Option/Standard English/Western”

才看到正确的汉字。这实在令人失望。

因此,在文字处理方面有缺陷的是 Netscape 而不是 IE。 另外,互联网

些上关于 HTML 国际化方面的资料中也有关于浏览器对 Unicode 等国际化

问题

的评测,其结论也是一致的。如:Notes on Internationalization

( /~flavell/charset/ ) 、

HTML Internationalization: Browser tests of 8-bit character codes

(/~flavell/charset/)

等。文中通过 koi8-r 和 Greek 等 charset 对 Tango (2.7.1)、Lynx 2.6/2.7、

IE 3.01 欧洲版、IE 3.03、IE 4.0、NS Nav 3.03、NS C 4.04 做了对比,只有

MSIE 通过了全部测试。

虽然我们指定了 gb2312 或 gb_2312-80 的时候,MS IE 和 NS Nav 对

汉字

的解释结果是类似的,但是,Netscape 对欧洲字符的解释却是混乱的, 大部

字符被简单地解释成为问号,这和“Notes on Internationalization ”文中指

出的问题是一样的。把欧洲字符解释成汉字,仅仅是一种巧合,这是操作系统或

汉字平台在字符显示上的作用,尽管 Netscape 在内部用了很多技巧来实现多

种的实现,但是它的实现是不规范的,带来的问题比它表面上的好处要严重。

另外,通过我们前面的分析可以看到,我们谈论的 HTML 中的汉字代码与

Unicode 的关系是 GB或BIG5 与 Unicode 转换码的关系,而不是 Unicode

汉字

编码。

一个好的中文网点,应采用规范的 (指定gb_2312-80或gb2312,并保证

汉字

在 HTML 源码中是汉字,而不是与号分号序列表示)方法, 才能保证更多的人

够阅读你的网页。关于这方面的内容参见“乱码大全”(9)(10)中的详细叙述。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(18)──日文和韩文的汉字编码(1)

发信站: BBS 水木清华站 (Tue Apr 14 15:15:27 1998)

乱码大全(18)──日文和韩文的汉字编码(1)

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

***************

《乱码大全》前面的各个部分中有很多是对汉字乱码进行分析的。除了《乱

码大全(3)》的综述外,HTML、Unicode以及其他各种编码都有可能与汉字乱码有

关。尽管如此,我们在日常的邮件来往中,仍然有很多乱码没有包括在上面的讨

论中。这里将比较典型的情况归纳起来作为补充。

下面列举的几种编码中,日文 JIS 和韩文汉字编码是 7 位编码,其他是 8

位编码。这两种 7 位编码看上去很像, 其他的编码之间业很项,并且和我们原

来介绍过的 UTF-8 看上去也没有什么太明显的区别,因此只能通过试验来进行。

下面先列举一下这些编码的例子:

日文 JIS 编码:[iso-2022-jp]

----------------------------

.$BF|KE*E_E7JBITB@Nd!$<)3n20N$6uD4L5O@E_2FET5kF@WLB-!$2f:#.(B

.$BG/E_E7>e?H@'0l7o30Ee2C0l8DMSLSGX?4!#=;K<@'3+;Y!$2f.(B

.$B8=:_E*KJITN;!#G!2LM-I,MWVh0l:3.(B Windows 95

.$BOB.(B Office .$BGgkE*8wHW4T@'WLM-MQE*!#.(B

(其中的 ESC 字符已经用 "." 代替)

日文 Shift-JIS (SJIS) 编码:[shift_jis]

---------------------------------------

擔杮揑搤揤暲晄懢椻丆帶妿壆棦嬻挷柍榑搤壞搒媼摼渒懌丆変崱

擭搤揤忋恎惀堦審奜搮壛堦屄梤栄攚怱丅廧朳惀堦昅戝奐巟丆変

尰嵼揑朳慸惀2漭4愮丆徣晄椆丅擛壥桳昁梫涙堦嵄 Windows 95

榓 Office 攪為揑岝斦娨惀渒桳梡揑丅

日文 EUC 编码:[euc-jp]

-----------------------

泣塑弄胚欧事稍吕武·缉愁舶韦鄂拇痰侠胚财旁惦评滋颅·叉海

钳胚欧惧咳困办凤嘲佩裁办改陀逃秦看。交思困办僧络倡毁·叉

附哼弄思僚困2柽4篱·臼稍位。恰蔡铜涩妥骤办撼 Windows 95

下 Office 晴茈弄各茸丛困滋铜脱弄。

韩文 KSC 编码:[euc-kr]

-----------------------

祉茆钴韵舾?荇骷找,旎螃瑭嘴亡疣夙皱韵

瞍钴郛鹫憷2乜4舳,帻荇瞩。妪妄牦

Office 钕迤钴蚊陲

憷?牦槟钴。

源绣责?痣,洳醒

愚艘颞,洳

椹俞扉蘖 Windows 95

掖韵舾呔泱憷扉遂桠鬟圣扉肆逑倬畚泯。瘳郛憷扉

韩文 KSC-HZ(KHanzi) 编码:

-------------------------

.$(ClmbnTOt8!!twT4PeTp!!pk#,d2PQ.(B

.$(CR4TOt8_>csc@liKlhbw_J%liKAeOY>[Nc}!#q,[.c@liy6S^KRr(#,d2.(B

.$(Cz^n$n[.pUc@.(B2.$(CX?.(B4.$(Ct6#,`}tVu!#e}M}jsy1i)Sali^A.(B Windows 95

.$(C{z.(B Office .$(CnOeFnNCZo|=c@!!jsiDn!#.(B

(其中的 ESC 字符已经用 "." 代替)

上面这些编码的缩写中,JIS 代表 Japanese Industrial Standard、 EUC

代表 Extended Unix Code,ShiftJIS Macintosh 和 DOS-V 上的 8 位日语编码

标准。JIS 和 KHanzi 都使用 ESC $... 序列来标识编码的部分。详细信息参见

Japanese Character Encoding for Internet Messages(rfc1468) 、[EUC-JP]、

[ISO-2022-JP]、Korean Character Encoding for Internet Messages(rfc1557)、

[KSC5601]、[EUC-KR] 等内容。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(19)──日文和韩文的汉字编码(2)

发信站: BBS 水木清华站 (Tue Apr 14 15:16:09 1998)

乱码大全(19)──日文和韩文的汉字编码(2)

比较理想的方法是安装一套 NJWIN 1.6,特别要注意:在 PWindows 95 中需

要把Option 中的 My Windows Systems 选项设为 Standard English/Western。

( 如果你正在运行金山词霸之类的抓屏翻译软件,最好先关掉鼠标取词功能。)

这样,在 NJWIN 的编码选择菜单中分别去试验日文就韩文的选项。 上面五种编

码都可以被分别识别出来。如果试验不出来,应该考虑这个编码是否有可能属于

UTF-8 编码,请参考《乱码大全》中关于 UTF-8 编码的部分。

还有一种可以试验的方法,就是将邮件拷贝成一个纯文本文件,在文件的开

始加上这样一行:

然后将文件改名为 *.HTM,用 MS-IE 4.0 (需要事先安装日语和朝鲜语组件) 浏

览,逐一改变语言选项。用 Netscape Navigator 也同样可以。它们都无法识别

KHanzi,Netscape 对 UTF-8 的阅读也要打些折扣。其实,KHanzi 就是 KSC 汉

字去掉高位后的结果,和 GB 与 HZ 的关系很相似。类似的还有 BIG-HZ 等。

上面 5 种编码的转换还可以通过软件 MView Convert(下载地址参见“乱码

大全──Unicode(2; UTF-7与汉字乱码)” ) 来转换。另外,除了 KHanzi 之外,

前面 4 种编码还可以被 OutLook Express 予以转换。这需要我们在乱码的前面

加一个“信头”,格式如下:

MIME-Version: 1.0

Content-Type: text/plain;charset="iso-2022-jp"

其中引号以内的东西,可以是前面例子标题中方括号里的内容。注意如果原来有

信头,那么所加的这两行和原来的信头不要有空行,整个信头和正文至少要空一

行。然后将文件改名为 *.EML,然后双击它启动 OutLook Express (需要事先安

装日文和朝鲜语组件)。当然你可能需要经过试验才能获得正确的解码。

上面这几种编码可能会出现在电子邮件或相应的中文网点中。比如:日本的

中文周刊报纸《中文报道》(/cfm/) 的大部分内容就采用

的是 JIS 编码。 当然,编码的转换只适合以上编码中的汉字的转换,做不到翻

译。 BTW,如果你能够阅读日文(网页),却没有合适的日文浏览环境,不妨试一

试 / ,这个服务器能够将你指定的日文网页转换成图

像来阅读,从而没有日文环境也能够阅读日文。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(20)──高位清零、HZ、EHZ汉字(1)

发信站: BBS 水木清华站 (Tue Apr 14 15:18:22 1998)

乱码大全(20)──高位清零、HZ、EHZ汉字(1)

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

***************

前面谈到,很多邮件服务器和网关只能传送 7bit 的信息。一些邮件进行了

适当编码,还有一些没有编码。 比如在 中在其确省的参数配置情况下

发送汉字信息,就会丢失全部的高位 (bit7)。本 BBS 的网友 sll (上帝一发笑,

人类就思考) 曾经发信对“乱码大全”提出了这个方面的补充建议。同样,曙光

BBS 的 limi (龙的船人) 也曾提到过类似问题。

比如电子邮件中经常会出现类似这样形式的东西:这种情况其实也经常发生

在用telnet时,默认是禁传高位而忘了set binary等类似情况。

!0BRBk4sH+!1#,WwU_#:bluesea#,K.D>Ge;*BBS3IT1!#;6S-TZ

BBSVPW*TX#,0oVzvJ9SCHm<~9}3LVPSv5=5DJ5NDT-TXSZK.D>Ge;* BBS5D Internet

LVB[Gx!#5XV7JG#:

telnet:// #,WWW 7CNJ5D5XV7JG

!# 51OBCf5DLu<~H+2?BzWcJ1#,W*TX

1>ND?IRT2;>-9}WwU_TJPm#:(1) W*TXK.D>Ge;* BBS 5DPEM7#;(2)

2;P^8DT-ND#;(3) W*TX=vO^SZ8wVV BBS :M7GILR5PTVJ5D8vHKMx5c!#

QO={8wVVPNJ=5D3-O.#,QO={7GWwU_=+1>ND;r>V2?SCSZHN:NU}J=3v

0f5D?/No!#1>WTH;6NJGH+ND5DR;2?7V!#

sll 指出,解决这种乱码的最简单的方法是利用 HZ 码也是屏蔽最高位的特

点,把乱码转为 HZ 码,再用 NJstar 等工具看。这样就需要手工加 ~{ 和 ~}

了。因为信件内容可能有英文字母、数字或英文标点,这些要放在括号外。

遗憾的是的确没有更好的方法能够自动识别原文中的 ASCII 码部分, 只能

手工慢慢试(特别是数字),没法编程序统一解决。因此一些不需要 ~{ 和 ~}

也能解析 HZ 编码的阅读环境 (如 IE 4.0、OutLook Express等) 将不能正确解

读这样的乱码。从信息的角度看,那部分丢失的高位信息是无法复原的。人工的

复原和试验是依靠的“先验知识”。再比如:

)0)$)$)$)$)$)$)$)$)$)$)$)$)$)$)P)$)$)$)$)$)$)$)$)$)$)$)$)$)$)$)$)$)4

)&!o EMAILZINE RACCTSV>O5AP !o)&K+::WVDZBkM,2= [M3R;B[L3])&

)& @4WT[EASTART 6+7=Fp5c] )& )&

)&Cb7QTSV>,8vHK9c8f,MxBgGsV0. )&|SNO7

),然后用 IE4.0 浏览器观

察效果,边修改存盘,边在浏览器中 Reload/Referesh。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(21)──高位清零、HZ、EHZ汉字(2)

发信站: BBS 水木清华站 (Tue Apr 14 15:20:13 1998)

乱码大全(21)──高位清零、HZ、EHZ汉字(2)

有的时候运气也许要好一些,比如下面这段信件,是一位网友请求帮忙识别

的信,信从日本寄来。(下面的邮件保持了原格式,但替换了内容和地址)

From: hello

To:*******************.cn

Subject: Welcome

Date: xx:xx:xx

$BHU1>5D6,Ll2"2;L+@d#,6xGR0l9+JR@o5D?U5wN^B[6,OD6<8x5C:Wc#,(J

$BNR=qDj6,LlIOImJGR;<~MbLW<***************本文或局部用于任何正式出版的刊物。

本自然段是全文的一部分。 严禁各种形式的抄袭,严禁非作者将 和非商业性质的个人网点。

BBS 限于各种 转载仅 的信头;(2)不修改原文;(3) 转载水木清华 不经过作者允许:(1) 。当

下面的条件全部满足时,转载本文可以 http: 址是 ,WWW访问的地

telnet: Internet讨论区。地址是: 的 助计算机初学者解决使用软件过程中遇到的实际问题。本

文原载于水木清华 BBS中转载,帮 “乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在

convert ms-win software pub ftp: ~cheung dics

search?query="" cgi-bin 的地址有: Convert

MView 可下载 等资料。 ) EHZ_ chicomp ~lee

( Newsgroups Usenet on EHZ Using for Guideline Proposed A EHZ_ Characters

Non-ASCII and ASCII Mixed Arbitrarily Scheme Encoding 7-bit Framework - to Extension

An )、 EHZ-CNS-BIG5_ BIG5 CNS GB, Extended EHZ: EHanzi。详细的信息参见:

Convert,选择 BIG5)。转换方法:使用 (Extended 上使用的“EHZ”编码 USENET 这是有人提

议的,在 Internet~{~gX6o!Y4!$~} ~{~gN{~} ~{~gg%MuEUEM[Ra^~} N{hRkbYBwn!$F[EFTP~}

fXJnKpFn]TG5g4a#Dcg2L ~{~gO ~{~gsYI7STj+q?OOpP~} BBS~{~gDcwKg%!?~}

BBS~{~gH)T_!${cORGc~} ~{~gEUEM[Ra^~} !(~}bluesea~{~g!?~} ~{~g!fc*n?DKG@!g!?I?O

编码,例如: 意料之中的 编码,但是转换之后却不是 还有这样的例子,看上去括号一大堆,

很象 可以了。这个例子说明了乱码的情况千变万化,规则是死的,但是人是活的。 转换方法去

处理就 码的阅读 再按照 ~}, 符号分别替换为 (J $B 你只需要将所有的 码。 去转换将一无

所得。原因是它本质上是 JIS 就按照 日文编码,但是如果你 (J,看上去是有些像 这封信里面

包括了 $BUbQy5D9bEL;9JG:SPSC5D!#(J Officie $B:M(J 95 Windows

$B5+R2C;SP5X7="02VC!#Hg9{SP1XR*4xR;P)(J"

$BV?#,NROVTZ5D7?WbJG(J2$BMr(J4$BG?#,J!2;AK#,3)7GDc4S9zDZ0a8v7?WS@4#,(J>

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(22)──其它汉字乱码

发信站: BBS 水木清华站 (Tue Apr 14 15:21:44 1998)

乱码大全(22)──其它汉字乱码

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

***************

汉字编码在计算机发展史上的应用和演变十分复杂。有些知识的获得是得益

于各个搜索系统,如 Yahoo! ()、Exicte

()、番薯藤(/b5/yam)

等,以及那些在 internet 上流传的中文软件。如:

/cgi-bin/search?query=

/cgi-bin/search?query=

/cgi-bin/search?query=

/software

我们前面讨论过的汉字编码,不算 MIME 等通用二进制编码,包括了:国标

(GB 2312-80)、BIG5、Hanzi(HZ)、 EHaizi、Unicode、UTF-7、UTF-8、日文EUC、

日文JIS、日文Shift-JIS(SJIS) 和 韩文(KSC)、还讨论了 HTML 欧洲字符表示、

高位丢失等与汉字乱码的关系。

还有一些我们暂时还没有涉及到,其中的有些在现在的应用中比较少见,还

有些和上面的编码还有一定的关系。这些编码包括:IBM 5550、IBM HOST、TCA、

EUC(非日文EUC)、Telegraph、NSC Internal code、NSC with Protocol 等等。

这些编码的转换可以由 chcode(地址见上面) 转换程序得到。 其中通过 EUC 编

码的数据再进行 HZ 编码,我们就会得到在编码上和 EHZ 很相似的码。

我们尚未提到的编码还有台湾的 CNS-11643(它的转换可参见

中 readme 文档的叙述,RichWin for Internet 也支持这种编码的转换)。另外,

随着 PWindows 的使用,GBK 大字符集的运用也会带来新的问题。如一些新收编

的汉字(如金字旁的容:“镕”,在 Pwindows 95中需要从控制面板安装 GBK 全

拼输入法进行输入)不能为老的系统显示、处理和转换等等。

乱码的讨论和例子并不能提供乱码类型的自动判断,有些编码是有一定特征

的,还有些没有明显特征的罕见编码,只能通过试验的方法进行。《乱码大全》

试图对这一类问题提供一个参考。希望朋友们提一些意见或建议,主要是为了修

改可能的错误,充实和完善内容。这个系列文章可能有续篇或原文的新版本,如

有都会先出现在水木清华 BBS的 Internet 板。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(23)──XXEncode 和 Btoa

发信站: BBS 水木清华站 (Fri Apr 17 01:38:36 1998)

乱码大全(23)──XXEncode 和 Btoa

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

***************

还有两个编码方式,在 E-mail与网络通信中用于将 8 位二进制数据编码为

7 位 ASCII 码。我们在收取 E-mail,尤其是跨平台的通信中,仍然可能会遇到

这两种编码。不过这两种编码出现的频度没有那么普遍。从编码的作用上,它们

完全雷同于 UUEncode、MIME、UTF-7 等编码的作用,即 使得数据能够安全通过

各 SMTP 和邮件网关而不丢失和混乱。只能通过 7 位乃至 6 位数据的网络主要

分布于一些大型机系统中。

XXEncode 编码

*************

本文前面的的部分提到过 UUEncode,也是这个 BBS 上用于发表小型二进制

文件的最常用的方法。XXEncode 和它非常相似。事实上,很多支持 UUEncode、

UUDecode 编解码的工具都同时还支持 XXEncode/XXDecode,如 Winzip 等。 但

这两种编码本身是不兼容的。XXencode 编码的文件可以 .XX 或 .XXE 为后缀名。

XXEncode 比 UUencode 提出的要晚,它的编码算法和 UUencode 基本相同,

但是使用的是不同的字符集。XXEncode编码使用的字符是:+-01..XYZa

bc...xyz,与 UUencode 相比,它的特殊字符更少。 XXEncode 用于将二进制文

件转换为 EBCDIC 兼容的 ASCII 码。 实际上 UUencode 编码中的有些字符无法

正确通过 EBCDIC-ASCII 转换。 实际上,一些 IBM 大型机经常使用 EBCDIC 而

非 ASCII 码。向这些计算机传送数据时可使用 XXencode 代替 UUEncode 方案。

而 Uuencode 的优点是没有小写字母,不过今天的网络通道中传送小写字符已经

没有任何问题了。

下面是 XXEncode 编码的一个例子。

begin 644

h60+U684kkh90uvHnm8iVgOCgpzTJruCuMalpNLBZMOCgmuv2jgTZiud0EZCn

hmRGlcOCvhUo8ourIqW-0EZDKoBSepBWXf91jpjewlgjXizenxR4bpRyxsfvq

hmfbHkwXhjDutzPDAph1HxUo8hPqplAepjAfCmgnWcOCljgv2p8rIqBDOmuv2

VjgTZiucUEY7H69L262ZiR4JmPaJonBP0qko8lzWVcko8

+

end

与 UUencode 不同的是,XXEncode 编码中,除最后两行外,每行数据以字母'h'

开头,而不是'M'。将 XXencode 编码的文件的后缀名改为 .XXE,可以双击它启

动 Winzip 获得解码。还有很多程序,如:

fastcode 32 : /ca/kent/

zipmagic :

wincode : /snappy/

/archives/CTAN/archive-tools/xxcode/xxencode.c

(源程序)

BtoA 编码

*********

BtoA,就是 Binary to ASCII。BtoA 是另一种将二进制文件转换为 ASCII

可打印字符的编码方式。 也是设计用于传输邮件的方法之一。一些主机不具备

某些空白字符,无法正确传输一些文件,BtoA 的设计就是意图避免这个问题的

发生。然而 BtoA 在某些 EBCDIC 系统中仍然有问题。 BtoA 的转换方法是将

相邻的 4 个字节用 '!' 到 'u' 这85个字符表示成 5 个字节。字符 x 用于行

首行尾,字符 'z' 或 'y' 用于表示 4 个连续的空格。因为由于这个算法是模

85 ('u'-'!'+1=85) 的算法,因此它的编码效率比 UU/XXEncode 或 Base64 要

高。

下面是 BtoA 编码的一个例子:

xbtoa Begin

+UTE)Ae_d.5@Vg0uF(JdTXNRcb^;

o?IW^9$NZcU_%Tqf6.%1:RdeCl$36;uI^f;d?QUTC]gf)!&

!bN$52Zh;_De_e("^@o^[e&08o]`,J?Zcq"Ie+O4X[Crudb

-en)cH=AjTqem,cG57eC`7(bHAdta5sq5+@8Cn+LT-18T&

W]Ec,H1bgsYc%1:/NTq`&(

xbtoa End N 168 a8 E 9 S 6e03 R ed287c44

fastcode 32 (/ca/kent/) 支持 BTOA 的编解码。还

可以从 ftp:///hpux/Misc/btoa-5.2/ 下载 BtoA 的源程序。

发信人: bluesea (蓝海), 信区: Internet

标 题: 乱码大全(24)──多国语言与字典翻译

发信站: BBS 水木清华站 (Mon May 4 16:28:12 1998)

乱码大全(24)──多国语言与字典翻译

“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮

助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS

的 Internet讨论区。地址是: telnet:// ,WWW访问的地

址是 。当下面的条件全部满足时,转载本文可以

不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅

限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将

本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。

在Internet中,使用最广泛的语言是英语,但是仍然有很多国家的新闻组使

用自己的语言,在新闻组转信的时候,这些文章会夹杂在整个讨论组里面。严格

来说,不同语言之间的翻译问题,已经超出了编码、解码的范畴。同一语义使用

不同语种进行表达,这不是固定算法或编码表格能够解决的。尽管如此,对于这

些表现为乱码的文字,仍然有一定的途径来解决它。这就是使用字典和翻译程序。

使用字典和翻译程序来帮助理解不同国家的语言,不是无条件的。现在有很

多软件称能够实现所谓全屏幕英汉翻译,但是这种翻译是文本所不推荐的。简单

快速的翻译只能解决词汇的不精确的转换,它们对于语法和专业的问题要打很多

折扣。所以这种难懂的结果往往是使人误入歧途。当然,机器翻译的研究是有意

义的,不过它的实际应用还有很长的路要走,也不是几个开发中文环境的小公司

能够轻易完成的。尤其是对于不同语系的语言来说。因此,掌握基本的英语是访

问Internet中国以外地域的最基本的条件,字典只能作为辅助的手段。

Internet上有很多这样的字典软件或在线翻译软件可提供选择。你不妨在

Yahoo!等搜索网点或共享软件的网点上用dictionary、translate、Danish、

French、German(Deutsch)、Norwegian、Spanish 、Swedish、Korean、Japanese

等关键词去查找字典软件或在线字典。如

/homepages/Dmitri_Karpatchev

的Windct是一个简单实用的英德字典;/~hagsten 的

Tolken97是一个很不错的对译软件,它可以实现英语、丹麦语、法语、德语、挪

威语、西班牙语和瑞典语之间成句的对译;/Ergane的

Ergane是多语种字典的免费软件。另外提供了一个日-英

机器翻译软件Typhoon MT,可以作为日语信息阅读的辅助工具,它甚至还提供了

日语的输入方法。

还有一些网点提供了在线的字典,可以直接上网查询,如

的Travlang's Translating Dictionaries

提供了德语、荷兰语、法语、西班牙语、葡萄牙语、意大利语、丹麦语、芬兰语、

捷克语、南非公用荷兰语、匈牙利语甚至世界语的在线字典,

/~pos7hink/cgi-bin/ 提供了韩英在

线字典/research-it/汇集各种语言字

典、计算机词汇字典和其他工具字典,而

/~ric/resources/ 甚至搜罗了世界上包

括汉语、朝鲜语、日语(和英/英和)等语言在内的一百多种语言的在线对译字典。

在新闻组中或 Web网点中,为了确定你所不能识别的语言是哪一种,可以参

考互联网域名后缀的国家代码。如cn代表中国、de、pl、jp分别代表德国、波兰

和日本等。你用domain、name、country、code 这四个关键词在Yahoo!等搜索网

点上可以得到很多internet域名后缀的国家代码表。也可以在

/pse/上在线查询。

这些资源的使用可以帮助我们在没有其他帮助的情况下,有限地理解一些外

语文章。并且最好能够有一定的英语(或法、德语等之一)的基础再来使用它们。

但是通过这些工具一般无法获得高质量的阅读和理解,对于重要的信息,最好是

能够设法寻找你所熟悉的语言的相应版本以求确认。因此,本节的方法是作为乱

码阅读的一个解决手段提出的,不可能代替语言翻译。

苹果mail乱码问题

分享于 2006-5-21 02:39:00

简单来说,mail的做法十分标准(7bit ascii或quoted-printable utf-8)。可惜国内很多邮箱服

务商的管理人员实在太不上档次,当然也和windows平台把这些人惯坏了有关,没有国际

化意识。所以为了迁就他们,或者在发信之前手动指定编码,或者用defaults write命令永久

修改mail的默认编码。如果还有问题则不是用户能做的了,如果确定收件人使用的邮件软

件没问题,则可以打电话大骂自己或收件方的邮件服务商的800热线mm[em22] 让他们的

技术工程师好好学习一下国际化常识再配置服务器,别给中国人丢脸。

邮件传送的编码问题涉及很多方面,首先要搞清楚ascii。0~127部分是由控制字符crlf和可

打印字符(a到z、数字、标准符号等)之分,8bit ascii(128~255部分)都是非打印字符(非

拉丁语系语言字符编码使用多个非打印字符组合表示,比如中日韩文)。mail判断使用何种

字符编码的时候会考虑很多因素:是否为纯文本邮件、是否有附件,是否包含非打印字符,

是否包含crlf字符(smtp协议不允许crlf直接发送,这违反rfc-2822标准)。我印象中,系

统当前默认语言对mail自动选择编码不产生影响,只要不能用7bit ascii就都是utf-8。注:

邮件头中content-type一行中标识了字符编码。

除了字符编码以外,传送编码也起很重要作用。常见传送编码有7bit, 8bit, base64,

quoted-printable(qp)。mail发中文邮件默认使用与原信相同的编码或base64。有时也使用qp

编码,这个编码好处是就算数据有误也不容易造成乱码,坏处是邮件内容比较大。楼主所说

的什么邮件大小变小了就是因为这个原因,而不是什么自动附加了utf-8内容[em20] 至于

8bit和base64是很多pc软件比如outlook, foxmail喜欢用的传输编码,和quoted-printable比

起来各有千秋。(我个人觉得使用8bit很容易出问题,尽管比较省空间)注:邮件头中有一

行content-transfer-encoding标识了传送编码。

废话了半天,总之一句话,mail尽量使用7bit asc发送邮件,否则就用base64 utf-8,再不行

才上别的。这种做法是最标准且跨平台(win, mac, *)和国际化(各种语言)兼容最好

的做法!所以当再有人抱怨苹果发的邮件是乱码或类似问题,只要自信大声地指责对方“谁

让你用不上档次的邮件服务商、客户端或操作系统,先去学习一下基本知识搞清楚谁落后谁

先进再说。”

关于mail如何选择编码发送邮件的问题,有兴趣的兄弟们可以继续研究一下各种情况,还

是有点复杂的。不过在研究之前强烈建议先了解以下基础知识,以免得出错误结论:标准

ascii、扩展ascii、utf-8(16, 32)、euc、gb-2312、big5、gbk、gb-18030以上各编码之间覆盖

范围及区别;7bit、8bit、base64、quoted-printable之间区别;smtp协议rfc-2822标准……

最后再多说一句废话:在当今这个被一些不上档次的系统、软件和管理人员搞的乱七八糟的

网络世界,mail采用最标准的优秀策略,却不得不为一些不上档次的人或系统背黑锅,真是

非常非常非常……的遗憾[em76] 国际化和本地化的取舍很明显苹果选择了国际化。很多其

它的苹果软硬件、技术和应用理念也背了很多类似的黑锅~ 哎~~ [em70]

分享于 2006-5-23 23:52:00

之前的回贴似乎口气有点太张扬了,呵呵,以后谦虚、谦虚~~~

triplexone指出的那个附加了utf-8的“证据”,是因为在以html发送邮件。所以邮件体内除

了要有html文本以外还需要有纯文本两份内容,我不确认这是否rfc-2822规定了,但当前

应该所有的邮件客户端软件都是这么做的(比如outlook)。如果以纯文本发送邮件,就不会

有冗赘的html段落了。

关于是苹果的本地化做的不好,还是服务商的国际化意识不好的问题。我觉得,本地化从某

种角度来说就是国际化。苹果系统的国际化策略——优秀的没话说——甚至连切换操作系统

语言都不需要重启。

就邮件乱码来说,可能认为win上普遍使用gb-2312这种编码大家用的好好的,没有问题。

但如果收件人在繁体中文或者日韩等非英语系环境,他看到的就全是一堆莫名其妙的繁体汉

字韩文日文字符,或者乱码。只有unicode可以保证在任何语言环境下显示的都是中文字!

其实,win其实在文本编码方面根本没有本地化,它是偷懒的强制默认gb-2312,这种为了

兼容性考虑的做法,带来了无数问题。如果win像苹果系统一样坚决强力推行unicode(其

实win内核都是unicode的,只是表层图形界面为了兼容性改成gb-2312中文了,莫名其妙!),

这世界早就不存在中日韩乱码问题了,无论是网站或邮件或任何应用软件。

相反苹果在任何时刻都使用unicode,这保证了在世界上任何地区都不会有乱码问题。而且

当与旧时代的win交互时候,为了照顾win那不够彻底的国际化策略,苹果也提供了各种语

言编码几十种以兼容win所用的那些旧时代编码。明明是win的国际化设计不够坚决彻底带

来很多问题,而苹果平台却要背黑锅,被人误解为本地化不好。

解决Mac OS邮箱收到乱码邮件

发布于2011-10-12, 17:53 | 22,369 次阅读 | /

用苹果电脑自带的Mail程序发送电子邮件时,常常出现乱码。下面是问题原因

和苹果电脑Mail软件发送电子邮件的乱码问题解决方法

无论系统默认编码是什么类型的简体中文,只要没有指定编码,也就是自动,苹

果Mail都会在邮件后面自动加上Unicode的源代码。比如说如果默认编码是“简

体中文EUC”,如果我们不指定编码发邮件的话Mail除了把GB2312编码的内

容放到邮件里面以外,还会在源代码后面自动加上UTF-8的编码,这才是引起

电子邮件乱码的原因。如果我们指定了编码(比如说EUC),那么Mail就不会

把UTF-8的源代码加上去了。这一点也可以从邮件大小上看出来。拿我做的实

验来说,如果指定编码,那么邮件大小是4K,如果不指定,那就是20K,显然

Mail把其它的编码加到邮件里面了。

也就是说,引起乱码的原因并不是哪个类型的编码兼容不好,而是Mail会自动

在邮件后面加上Unicode (UTF-8)的编码,和我们选择什么编码关系不大(我

试过了,只要是手动指定编码了,EUC,GBK和18030都可以正常显示)。看

来下面的工作就是 怎么不让Mail自动加上那部分的编码。

解决方法:选者出现乱码的邮件,点击邮件菜单->文本编码->简体中文(GB 2312)

本文标签: 编码邮件乱码文件使用