以下内容确实有效(输出一条俄语消息,关于我尝试打开一个不存在的目录)在 Debian Linux (Bash 上) 上的 perl5(修订版 5 版本 22 subversion 2):
LANGUAGE=ru_RU.UTF-8 perl -Mstrict -Mwarnings -Mlocale -e 'opendir my $fh, "afdsfd"; print $!, "n"'
但是在 FreeBSD perl5 (修订版 5 版本 20 subversion 3) 上,它会用英语打印消息。为什么它不能在 FreeBSD 上运行?
在 FreeBSD 上:
$ locale -a | grep ru
ru_RU.CP1251
ru_RU.CP866
ru_RU.ISO8859-5
ru_RU.KOI8-R
ru_RU.UTF-8
我发现 FreeBSD 10.3-RELEASE 上的俄语消息适用于 KOI8-R,但不适用于 UTF-8。
例:
perl -Mstrict -Mwarnings -MPOSIX -e 'setlocale(POSIX::LC_ALL, "ru_RU.KOI8-R"); opendir my $fh, "afdsfd"; print $!, "n"' | iconv -f KOI8-R -t UTF-8