[问题] 消不掉的错误讯息,和 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