区域设置在 FreeBSD 上的 Perl 中不起作用
Locale does not work in Perl on FreeBSD
对于 Debian Linux (Bash) 上的 perl5(修订版 5 版本 22 颠覆 2),以下内容确实有效(以俄语输出一条关于我试图打开一个不存在的目录的消息):
LANGUAGE=ru_RU.UTF-8 perl -Mstrict -Mwarnings -Mlocale -e 'opendir my $fh, "afdsfd"; print $!, "\n"'
但是在 FreeBSD perl5(修订版 5 版本 20 颠覆版本 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
对于 Debian Linux (Bash) 上的 perl5(修订版 5 版本 22 颠覆 2),以下内容确实有效(以俄语输出一条关于我试图打开一个不存在的目录的消息):
LANGUAGE=ru_RU.UTF-8 perl -Mstrict -Mwarnings -Mlocale -e 'opendir my $fh, "afdsfd"; print $!, "\n"'
但是在 FreeBSD perl5(修订版 5 版本 20 颠覆版本 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