[問題] 消不掉的錯誤訊息,和 utf8 相關

作者: Neisseria (Neisseria)   2018-12-02 14:35:21
好久沒在 Perl 板發文,最近小弟碰到 Perl 的小問題上來問問大家
環境介紹:
- Windows 10 Home Edition,正體中文版
- ActivePerl ver. 5.26.1
- 在 cmd 下操作
以下是小弟寫的 Perl 命令稿,用途是正體中文轉簡體中文:
https://pastebin.com/nLsMRJt6
使用以下指令執行此命令稿:
$ perl -p -i.bak convertZh.pl path/to/file.txt
噴出以下的錯誤訊息:
Wide character in print at convertZh.pl line XXX, <> line XXX.
其實文字還是可以正確轉換,但是會一直噴錯誤訊息
即使用 no warnings; 也關不掉
[Update]
在命令稿尾端加上這行就修好了:
$_ = encode_utf8 $_;
decode 完當然要再 encode 回去啊 Orz
命令稿留著給大家參考
作者: CindyLinz (Cindy Wang)   2018-12-02 16:23:00
讀檔進來的應該就已經是 UTF8 了, 讀檔時要 decode不過, decode_json 應該是要讀取 UTF8 的, 所以餵給 decode_json 之前應該別動才對啊, 抱歉我漏看了前面一排 binmode 設定STDOUT 已經 binmode utf8 了, 那輸出就別先 encode 了不過.. BEGIN 裡面的東西應該會比 binmode 設定還早跑因為 binmode 不在 BEGIN 裡面.. @@"為什麼要用 BEGIN 啊... @@"為了配合 -p 喔? (思也許 binmode 該設在 BEGIN 裡... (思我發現我對 binmode 的操作完全不熟w平常都是習慣 byte 進 byte 出的.. XD想要怎樣作 char encoding 都內部自己做這樣.. @@

Links booklink

Contact Us: admin [ a t ] ucptt.com