【问题标题】:Locale does not work in Perl on FreeBSD语言环境在 FreeBSD 上的 Perl 中不起作用
【发布时间】:2016-11-17 05:41:27
【问题描述】:

对于 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 (revision 5 version 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

【问题讨论】:

  • 哦,我发现LANGUAGE是一个GNU扩展。但这并不能解决我的问题,因为用LC_ALLLANGLC_MESSAGES替换LANGUAGE后它也不起作用:-(

标签: locale freebsd perl


【解决方案1】:

我发现 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多