用CodeView分析“字符实体”类型邮件乱码

如果你手里只有一把锤子,你就会把所有的问题都看成钉子。

1 “字符实体”类型邮件乱码

我在一篇 旧文 中分析过“字符实体”类型的邮件乱码。产生原因大致这样:原文是:

来信收到,谢谢 (一)

对应的编码是

C0 B4 D0 C5 CA D5 B5 BD A3 AC D0 BB D0 BB (二)

有的软件系统不支持中文,它把高位为1的字符用命名实体表示。就产生了:

À´ÐÅÊÕµ½£¬Ð»Ð» (三)

有的服务器或客户端软件会把这些命名实体显示成对应的CP1252字符,即:

À´ÐÅÊÕµ½£¬Ð»Ð» (四)

我在旧文中,用cnbook的替换表功能将(三)的命名实体替换到(二)的编码文本,再用CodeView将编码文本转换到文本。当时主要目的是介绍cnbook的替换表,手里拿着锤子,就把问题看成钉子了。其实解决这个问题可以不用cnbook。

2 用CodeView解决“字符实体”类型乱码

CodeView 是一个查看文本编码的小工具。我们用它来解决这个乱码问题。

2.1 得到CP1252字符

首先要得到命名实体对应的乱码,即CP1252字符。

À´ÐÅÊÕµ½£¬Ð»Ð»

如果你的邮件已经是这个样子,就可以跳过这步。如果你的邮件是

À´ÐÅÊÕµ½£¬Ð»Ð»

你就新建一个文本文件,内容如下:

<HTML>
<BODY>
&Agrave;&acute;&ETH;&Aring;&Ecirc;&Otilde;&micro;&frac12;&pound;&not;&ETH;&raquo;&ETH;&raquo;
</BODY>
</HTML>

BODY标签之间粘贴上要转换的命名实体。保存到html文件,用浏览器打开,就可以看到:

À´ÐÅÊÕµ½£¬Ð»Ð»

复制这些CP1252字符。

2.2 由CP1252字符得到对应编码

打开CodeView。CodeView有两行是可以自己设置编码的。把第二行设置成CP1252,将最后一行设置成CP936,即GBK。然后把前面复制的字符粘贴到文本行

这样就可以从CP1252行得到CP1252字符对应的编码文本。在CP1252行点右键,在右键菜单选择“复制全部”复制这行编码文本。

2.3 将编码当作GBK编码转换到文本

先删除掉最后一行的文本,然后将复制的CP1252编码文本粘贴到最后一行,即CP936行。这时在文本行就可以看到对应的文本。

3 结束语

如果把CP1252编码当作GBK编码,文本行还是乱码,你可以再试试Big5,即把最后一行设置成CP950。这种类型的乱码邮件还是比较容易处理的,你可以自己动手解决它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值