我的[[Perl代码将一些POST数据打印到日志文件。
有时我会遇到以下错误:在...处打印宽字符
我意识到
编码
存在一些问题。所以我添加了以下几行:use open ':std', ':encoding(UTF-8)';
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
然而,错误变成了另一种错误,并显示了这样的消息:“ \ xFF”不映射到Unicode那么,使它正常工作的正确方法是什么?
use open ':std', ':encoding(UTF-8)';
执行以下操作:
open
,则在相同范围内导致:encoding(UTF-8)
的后续使用添加open
。binmode(STDIN, ':encoding(UTF-8)');
binmode(STDOUT, ':encoding(UTF-8)');
binmode(STDERR, ':encoding(UTF-8)');
问题是不应该对STDIN进行解码。解决方案1
use open ':std', ':encoding(UTF-8)'; BEGIN { binmode(STDIN); }
解决方案2
use open ':encoding(UTF-8)'; BEGIN { binmode(STDOUT, ':encoding(UTF-8)'); binmode(STDERR, ':encoding(UTF-8)'); }