在perl語言中,字串只有兩種形式:
(1)位元組流字串:不管字串是何種內容、何種編碼,都解析為單位元組的位元組串。
(2)字元流字串:按照utf8編碼方案,從左到右把位元組流解析為連續的字元流。
perl如何確定乙個字串是位元組流字串還是採用utf8編碼的字元流字串呢?
在perl內部,每個字串都有乙個utf8編碼標誌,這個標誌有兩個狀態:on或者off。如果標誌為on,就是字元流字串,反之就是位元組流字串。預設情況下,perl語言字串的編碼標識都是off狀態,即字串都是以位元組流字串型別進行操作的。
要開啟和關閉字串的utf8編碼標誌,可以採用encode模組的函式_utf8_on()和_utf8_off()來實現。
如果乙個變數的內容是從檔案讀入的,並且這個檔案是utf8編碼的,則包含utf8編碼字元的字串預設為位元組流字串。如果需要轉換為字元流字串,也需要用encode::_utf8_on()開啟utf8字元流處理的標識。
檔案input.txt以utf8編碼:
use encode;
use utf8;#使源**中包含漢字的字串常量統一程式設計字元流字串形式
open(in,'input.txt');
while($line=)
}close(in);
輸出結果:
注意:源**本身也是utf8編碼格式,正規表示式中包含的漢字就是utf8編碼的,如果讓這些漢字當做字元流常量來處理,必須在頭部加入"use utf8"說明,這個說明會使源**中出現的包含漢字的字串常量統一變成字元流字串形式。
程式設計,還是程式設計
喜歡程式設計,雖然水平一般,但還是執著地學習與程式設計有關的知識。中間因為工作關係與程式設計遠離了一段時間,現在又重拾起來,細想起來還是因為喜歡吧。喜歡程式軟體的思想和原理,喜歡程式 的魅力和成就感。程式設計軟體的思想是最值得學習的,一直認為思想決定行動,思想改變世界。每種軟體的流行和受人追捧,無不...
少兒程式設計程式設計
機械人比賽,聽上去讓人有一種高大上的科技感,沒錯,在大多數人眼裡,玩機械人那是科學家做的事情,不過隨著機械人教育的普及,越來越多的孩子也能夠駕馭這高大上的機械人。格物斯坦小坦克告訴你原因,這是歸結於孩子對於程式設計課程的學習,學會對機械人進行程式設計了,自然就能玩轉機械人啦。參加機械人比賽的意義遠遠...
LINUX程式設計 socket程式設計
什麼是套接字 套接字是一種通訊過程,它使客戶 伺服器系統的開發工作既可以在本地單機上進行,也可以跨網路進行。套接字建立過程 1,建立乙個套接字,這是分配給該伺服器程序的乙個作業系統資源,套接字由伺服器通過系統呼叫socket建立出來的,所以其它程序將不能對它進行訪問。2,給套接字起個名字,用系統呼叫...