【发布时间】:2020-02-04 06:32:46
【问题描述】:
我的 Perl 代码将一些 POST 数据打印到日志文件中。
有时我会遇到以下错误:
宽字符打印在...
我意识到编码存在一些问题。 所以我添加了以下几行:
use open ':std', ':encoding(UTF-8)';
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
但是随后错误变成了另一种错误,消息如下:
"\xFF" 不映射到 Unicode
那么什么是让它工作的正确方法呢?
【问题讨论】:
-
您可能正在打印一些非 utf8 数据。请检查 POST 数据是否为有效的 UTF8。另见Encode
-
能否给我们看一下打开日志文件句柄的代码?
-
@HåkonHægland - 我不知道,因为我看不到会发生什么。这就是我尝试将其打印到日志文件的原因。有没有办法安全地打印混合数据,
utf-8和non-uft-8数据? -
@GMB -
open LOG, '>>', log_file; binmode LOG, ':utf8'; -
提示:
:std导致binmode用于提供层的 STDIN、STDOUT 和 STDERR,因此无需显式调用binmode