mouse 发表于 2018-8-30 11:32:33

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

  今天在测试自己写的邮件模块的时候,发现客户端收到的邮件标题是乱码,于是学习了一下perl中对字符串处理的机制,再次记录下,也希望以后对其他朋友有所帮助
  首先perl只能处理2种编码的格式,ascii码和utf-8.
  那么perl首先要确定一个字符串是octets还是utf8编码,他完全是靠字符串上的utf8 flag.
  在perl内部,字符串结构由两部分组成: .如果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之后,收到的邮件显示正常


页: [1]
查看完整版本: 关于perl中,中文乱码的解决方法