2016-07-14 20 views
0

Die folgende funktioniert (gibt eine Nachricht auf Russisch über meinen Versuch, ein nicht vorhandenes Verzeichnis zu öffnen) für perl5 (Revision 5 Version 22 Subversion 2) auf Debian Linux (Bash):Locale funktionieren nicht in Perl auf FreeBSD

LANGUAGE=ru_RU.UTF-8 perl -Mstrict -Mwarnings -Mlocale -e 'opendir my $fh, "afdsfd"; print $!, "\n"'

Aber unter FreeBSD perl5 (Revision 5 Version 20 Subversion 3) wird die Nachricht in Englisch ausgedruckt. Warum funktioniert es nicht unter FreeBSD?


Auf FreeBSD:

$ locale -a | grep ru 
ru_RU.CP1251 
ru_RU.CP866 
ru_RU.ISO8859-5 
ru_RU.KOI8-R 
ru_RU.UTF-8 
+0

Oh, fand ich, dass 'LANGUAGE' eine GNU-Erweiterung ist. Aber das löst mein Problem nicht, denn nach dem Ersetzen von "LANGUAGE" durch "LC_ALL" oder "LANG" oder "LC_MESSAGES" funktioniert es auch nicht :-( – porton

Antwort

0

Ich habe festgestellt, dass die russischen Nachrichten auf FreeBSD 10.3-RELEASE Arbeit mit KOI8-R, aber nicht mit UTF-8 arbeiten.

Beispiel:

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