相信很多小伙伴在使用 Perl 語言的時候,經(jīng)常會遇到這樣一個問題,Perl 不支持中文?perl 輸入或者輸出中文會出現(xiàn)亂碼。這時怎么辦呢?下面小編就教小伙伴們?nèi)绾谓鉀Q這個問題。
方法/步驟
就以 windows 上的 ActivePerl 為例。
小編的代碼特別簡單,就是一句:
print "你好";
卻出現(xiàn)了亂碼,如圖。
遇到這樣的問題,我們要怎么辦?
其實就是 perl 編碼的問題,這其實和我們操作系統(tǒng)的編碼有關。
我們打開 cmd 命令提示符,輸入 chcp 獲得編碼類型代碼。
可見,小編這里的 windows 是代號 936 為默認編碼格式。
然后我們可以看到,936 代碼頁對應的是 gb2313(即中文),或者說是 gbk。
我們知道了我們 windows 是用 gb2312 編碼的,這時我們只要改變編碼格式即可。
在代碼頭部輸入:
use utf8; #引入utf8模塊 腳本內(nèi)的字符串使用utf8作為編碼格式 binmode(STDOUT,":encoding(gbk)"); #標準輸出使用gbk作為編碼格式,也可以把gbk改為gb2312 binmode(STDIN,":encoding(gbk)"); #如果涉及到輸入流,例如讀文件,不加這條讀中文文件會出現(xiàn)亂碼 binmode(STDERR,":encoding(gbk)"); #如果異常錯誤中的字符串有中文,請加上STDERR,否則也會出現(xiàn)亂碼 print "你好";
此時是不是就能正常輸出中文了呢?
一定要注意一點,如果代碼涉及到讀取中文的文件,一定要加 上binmode(STDIN,”:encoding(gbk)”);。
還有一種方法,針對我們 STDIN、STDOUT、STDERR(即標準輸入、標準輸出和標準錯誤)統(tǒng)統(tǒng)使用某種編碼作為編碼格式。
還是那個簡單的小程序,print 輸出一個中文。
代碼如下:
use utf8; use open ":encoding(gbk)",":std"; #標準輸入、輸出、錯誤皆用gbk編碼格式進行編碼 print "你好";
原文地址:https://jingyan.baidu.com/article/4f7d5712fd36301a21192744.html