宽字符和Unicode编码

问题描述 投票:0回答:1

我的[[Perl代码将一些POST数据打印到日志文件。

有时我会遇到以下错误:

在...处打印宽字符

我意识到

编码

存在一些问题。所以我添加了以下几行:use open ':std', ':encoding(UTF-8)'; binmode STDOUT, ':utf8'; binmode STDERR, ':utf8';
然而,错误变成了另一种错误,并显示了这样的消息:

“ \ xFF”不映射到Unicode

那么,使它正常工作的正确方法是什么?

perl unicode utf-8
1个回答
0
投票
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)'); }
© www.soinside.com 2019 - 2024. All rights reserved.