- 論壇徽章:
- 0
|
最近開始用perl,接觸到perl文字編碼的問題,看了不少資料
也做了不少測試,可是還是不能理解編碼轉(zhuǎn)換的實(shí)質(zhì)。具體問題看
下面的小例子:
Utf轉(zhuǎn)gb2312的方法:
use Encode;
my $str = "utf8中文";
print $str."\n"; #打印出亂碼(可以理解)
$str_cnsoftware = encode("gb2312", decode("utf-8", $str);
print $str_cnsoftware ."\n"; #打印正常中文
這個測試把源碼文件保存為utf-8格式就能運(yùn)行正常,但是 $str 如果是從
其他文件獲取來的,那打印的結(jié)果就不正常了,比如我把“utf中文”
存儲在編碼格式為utf-8的a.txt文件然后去讀取這個文件,代碼如下:
open(MYFILE,"<D:/a.txt") or die "error!";
$str = <MYFILE>;
print $str."\n"; #打印亂碼
$str_cnsoftware = encode("gb2312", decode("utf-8", $str);
print $str_cnsoftware ."\n"; #依舊是打印亂碼
這點(diǎn)測試和上一點(diǎn)的區(qū)別就是$str字符串的來源,上一個就是源碼文件(保存為utf-8格式)
里的,本次來源于讀取保存為utf-8格式的txt文件,為什么從外部文件讀取
的中文字符串無法轉(zhuǎn)換編碼(或者是轉(zhuǎn)換錯誤...)為什么差別就這么大呢?
很是不理解~~~~ 囧得有點(diǎn)郁悶了
真誠向各位大哥大姐求教。!
補(bǔ)充下:環(huán)境:xp dos窗口 activeperl5.8.8 |
|