2010/3/17

[Perl] perl for Unicode

因為Perl 的字串預設是 byte string,這對於一般使用上不會有太大的差別,但是因為我們所使用的變數內容會出現中文字,而這個時候就會遇到"Wide character in print at xxx line x”的錯誤訊息,而這就是內容編碼的問題。

上網找了一下,很快就找到解法,不過這需要perl 5.8.6 以上才能正常運作。

use utf8;

use utf8;之後,Perl也會假設外面也是用 utf8,但I/O是 big5,所以我們還要加寫這幾行,讓 Perl 知道I/O所要用的編碼。

binmode(STDIN, “:encoding(utf8)”);      
binmode(STDOUT, “:encoding(utf8)”);       
binmode(STDERR, “:encoding(utf8)”);

如果說是要寫檔案的話,也要記得把File Handle設定成utf8輸出喔。

binmode(FILE, “:encoding(utf8)”);

沒有留言:

張貼留言