關於perl中,中文亂碼的解決方法

今天在測試自己寫的郵件模塊的時候,發現客戶端收到的郵件標題是亂碼,於是學習了一下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='[email protected]';
sendmail("$mail_to","$mail_title","$mail_subject");
#sendmail是我自己寫的一個調用第三方smtp服務器發郵件的一個函數,並非perl自帶函數

經過decode之後,收到的郵件顯示正常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章