背景:
工作中发出的邮件主题有中文时就乱码,更气的是有的邮箱竟然不乱。幸运的是从新浪邮箱可以获取邮件的源码,发现主题包含中文时是需要Base64或qp编码的。于是有了这点积累。
正文:
1.所用的模块
MIME::Base64:用于Base64的编码
Encode:MIME::Base64只能编码单字节字符,要用它将中文先进行转换。
2.实现
sub getBase64Code{ my $str=$_[0]; my $charset=$_[1]; my $str_tmp; $str_tmp=Encode::decode_utf8($str); $str_tmp=Encode::encode($charset, $str_tmp); $str_tmp=encode_base64($str_tmp); chomp($str_tmp); $str_tmp="=?".$charset."?B?".$str_tmp."?="; return $str_tmp; }
|
方法接收要转换的内容及字符码。原理是将内容先转成utf8,再按要求字符码编码,然后再编码成base64,当然这样就可以得到base64编码了,但如果想用于邮件的头中则还要像代码中那样做一些格式化。