新聞中心
Perl是一種動態(tài)解釋型的腳本語言。 最初的設(shè)計(jì)者為拉里·沃爾(Larry Wall),它于1987年12月18日發(fā)表。Perl借取了C、sed、awk、shell scripting 以及很多其他編程語言的特性。其中最重要的特性是他內(nèi)部集成了正則表達(dá)式的功能,以及巨大的第三方代碼庫 CPAN。

方法/步驟
就以 windows 上的 ActivePerl 為例。
代碼特別簡單,就是一句:
print "你好";
卻出現(xiàn)了亂碼,如圖。
遇到這樣的問題,我們要怎么辦?
其實(shí)就是 perl 編碼的問題,這其實(shí)和我們操作系統(tǒng)的編碼有關(guān)。
我們打開 cmd 命令提示符,輸入 chcp 獲得編碼類型代碼。
可見,這里的 windows 是代號 936 為默認(rèn)編碼格式。
然后我們可以看到,936 代碼頁對應(yīng)的是 gb2313(即中文),或者說是 gbk。
我們知道了我們 windows 是用 gb2312 編碼的,這時(shí)我們只要改變編碼格式即可。
在代碼頭部輸入:
use utf8;
#引入utf8模塊 腳本內(nèi)的字符串使用utf8作為編碼格式
binmode(STDOUT,":encoding(gbk)");
#標(biāo)準(zhǔn)輸出使用gbk作為編碼格式,也可以把gbk改為gb2312
binmode(STDIN,":encoding(gbk)");
#如果涉及到輸入流,例如讀文件,不加這條讀中文文件會出現(xiàn)亂碼
binmode(STDERR,":encoding(gbk)");
#如果異常錯誤中的字符串有中文,請加上STDERR,否則也會出現(xiàn)亂碼
print "你好";
此時(shí)是不是就能正常輸出中文了呢?
一定要注意一點(diǎn),如果代碼涉及到讀取中文的文件,一定要加 上binmode(STDIN,”:encoding(gbk)”);。
還有一種方法,針對我們 STDIN、STDOUT、STDERR(即標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤)統(tǒng)統(tǒng)使用某種編碼作為編碼格式。
還是那個簡單的小程序,print 輸出一個中文。
代碼如下:
use utf8;
use open ":encoding(gbk)",":std";
#標(biāo)準(zhǔn)輸入、輸出、錯誤皆用gbk編碼格式進(jìn)行編碼
print "你好";
新聞標(biāo)題:Perl輸出中文亂碼解決方法
URL分享:http://www.5511xx.com/article/cogohjs.html


咨詢
建站咨詢
