加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

关于perl中,中文乱码的解决方法

发布时间:2020-12-15 23:44:46 所属栏目:大数据 来源:网络整理
导读:今天在测试自己写的邮件模块的时候,发现客户端收到的邮件标题是乱码,于是学习了一下perl中对字符串处理的机制,再次记录下,也希望以后对其他朋友有所帮助 首先perl只能处理2种编码的格式,ascii码和utf-8. 那么perl首先要确定一个字符串是octets还是utf8编码,

今天在测试自己写的邮件模块的时候,发现客户端收到的邮件标题是乱码,于是学习了一下perl中对字符串处理的机制,再次记录下,也希望以后对其他朋友有所帮助


首先perl只能处理2种编码的格式,ascii码和utf-8.

那么perl首先要确定一个字符串是octets还是utf8编码,他完全是靠字符串上的utf8 flag.

在perl内部,字符串结构由两部分组成: [utf8 + 数据].如果utf8 flag是on的话,perl就会把它当成utf8字符串来处理,如果utf8 flag为off,perl就会把它当成octets来处理. 所有字符串相关的函数包括正则表达式都会受utf8 flag的影响.


处理中文乱码的解决方法:

#处理字符串要依赖Encode这个库,如果没有可以使用以下命令安装:?

cpan?Encode


待安装完成之后,使用encode库对字符串操作即可

#!/use/bin/perl
use?strict;
use?warnings;
use?Lib::SMTP;
use?Encode;

my?$mail_title=decode("utf8","这里是邮件标题");
my?$mail_subject=decode("utf8","这里是邮件内容");
my?$mail_to='yourname@domain.com';
sendmail("$mail_to","$mail_title","$mail_subject");
#sendmail是我自己写的一个调用第三方smtp服务器发邮件的一个函数,并非perl自带函数

经过decode之后,收到的邮件显示正常

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读