因為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)”);
沒有留言:
張貼留言