发信人: wenbobo()
整理人: wenbobo(2002-12-22 01:27:57), 站内信件
|
发信人: bluesea (蓝海), 信区: Internet
标 题: 乱码大全(23)──XXEncode 和 Btoa
发信站: BBS 水木清华站 (Fri Apr 17 01:38:36 1998)
乱码大全(23)──XXEncode 和 Btoa
“乱码大全”,作者:bluesea,水木清华BBS成员。欢迎在 BBS中转载,帮
助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS
的 Internet讨论区。地址是: telnet://bbs.tsinghua.edu.cn ,WWW访问的地
址是 http://bbs.tsinghua.edu.cn 。当下面的条件全部满足时,转载本文可以
不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅
限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将
本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。
[email protected]
还有两个编码方式,在 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..89ABC...XYZa
bc...xyz,与 UUencode 相比,它的特殊字符更少。 XXEncode 用于将二进制文
件转换为 EBCDIC 兼容的 ASCII 码。 实际上 UUencode 编码中的有些字符无法
正确通过 EBCDIC-ASCII 转换。 实际上,一些 IBM 大型机经常使用 EBCDIC 而
非 ASCII 码。向这些计算机传送数据时可使用 XXencode 代替 UUEncode 方案。
而 Uuencode 的优点是没有小写字母,不过今天的网络通道中传送小写字符已经
没有任何问题了。
下面是 XXEncode 编码的一个例子。
begin 644 hello.txt
h60+U684kkh90uvHnm8iVgOCgpzTJruCuMalpNLBZMOCgmuv2jgTZiud0EZCn
hmRGlcOCvhUo8ourIqW-0EZDKoBSepBWXf91jpjewlgjXizenxR4bpRyxsfvq
hmfbHkwXhjDutzPDAph1HxUo8hPqplAepjAfCmgnWcOCljgv2p8rIqBDOmuv2
VjgTZiucUEY7H69L262ZiR4JmPaJonBP0qko8lzWVcko8
+
end
与 UUencode 不同的是,XXEncode 编码中,除最后两行外,每行数据以字母'h'
开头,而不是'M'。将 XXencode 编码的文件的后缀名改为 .XXE,可以双击它启
动 Winzip 获得解码。还有很多程序,如:
fastcode 32 : http://www.angelfire.com/ca/kent/
zipmagic : http://www.mijenix.com
wincode : http://www.members.global2000.net/snappy/wincode.html
http://www.rarf.riken.go.jp/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 example.txt
+<VdLTs2D^_X"T#aK)#>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,cG\57eC`7(bHAdta5sq5+@8Cn+LT-18T&
W]Ec,H1bgsYc%1:/NTq`&(
xbtoa End N 168 a8 E 9 S 6e03 R ed287c44
fastcode 32 ( http://www.angelfire.com/ca/kent/ ) 支持 BTOA 的编解码。还
可以从 ftp://hpux.csc.liv.ac.uk/hpux/Misc/btoa-5.2/ 下载 BtoA 的源程序。
--
上帝创造猫,是为了让人类体验抚摸老虎的快乐。
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.96.151.219]
|
|