为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

有趣的乱码

2017-09-28 1页 doc 11KB 71阅读

用户头像

is_562397

暂无简介

举报
有趣的乱码有趣的乱码 说发送邮件时内容中书写はぁ~,收信时会显示成はち。懂日文的朋友大概能明白,感叹词 はぁ~怎么就变成了蜜蜂はち呢? 后来找到了原因。我们的邮件系统是用 Perl 写成的。其中有一个空格删除功能,就是在显 示时将邮件中的全角空格全部删除,其实现方法如下: $body =~ s/ //g;看起来似乎没有问题,但就是这条语句将はぁ~变成了はち。日文 euc-jp 编码下,这几个字符串的编码如下: 字符串 编码 はぁ~ A4CF A4A1 A1C1 はち A4CF A4C1 全角空格 A1A1 ぁ的后半个字...
有趣的乱码
有趣的乱码 说发送邮件时内容中书写はぁ~,收信时会显示成はち。懂日文的朋友大概能明白,感叹词 はぁ~怎么就变成了蜜蜂はち呢? 后来找到了原因。我们的邮件系统是用 Perl 写成的。其中有一个空格删除功能,就是在显 示时将邮件中的全角空格全部删除,其实现方法如下: $body =~ s/ //g;看起来似乎没有问题,但就是这条语句将はぁ~变成了はち。日文 euc-jp 编码下,这几个字符串的编码如下: 字符串 编码 はぁ~ A4CF A4A1 A1C1 はち A4CF A4C1 全角空格 A1A1 ぁ的后半个字符和~的前半个字符恰好都是 A1,所以就被删除了,于是就出现了有意思的乱 码现象。修改方法也比较简单,只要正确识别出每个汉字的起止位置即可。 my $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]'; my $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]'; while($body =~ s/\G(($twoBytes|$threeBytes|[\x00-\x7F])+?) /$1/g){}; # 识别汉字, 如果汉字后面有空格则删除 $body =~ s/^ //g; # 最后删除最开始处的全角空格
/
本文档为【有趣的乱码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索