Я подозреваю, что "ru" не является допустимой локалью. Попробуйте выполнить команду lang=ru locale
и посмотрите, есть ли какие-либо сообщения об ошибках. В моей системе "ru" является недопустимым языковым стандартом, а "ru_RU" находится в iso8859-5; вам нужен ru_RU.UTF-8, чтобы он работал в utf-8.
$ LANG=ru locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Чтобы найти набор символов, используемый для локали, вы можете использовать инструмент locale
:
$ LANG=ru_RU locale -c -k charmap collate-codeset
LC_CTYPE
charmap="ISO-8859-5"
LC_COLLATE
collate-codeset="ISO-8859-5"
Обратите внимание, что локали определены в категориях. Категория LC_COLLATE используется для сортировки. Настройка LC_ALL переопределит все из них, либо вы можете установить один отдельно, используя именованную переменную среды, или вы можете установить значение по умолчанию, установив LANG. Большинство людей захотят установить LANG для ежедневного использования, а не LC_ALL.
В выходных данных инструмента locale
категории, которые установлены на основе LC_ALL или LANG, будут отображаться в кавычках, тогда как категории, установленные их собственными переменными (и сам LC_ALL, если установлен, и LANG, если LC_ALL не установлен) будут отображаться без кавычек. , Например:
$ LANG=en_US.UTF-8 LC_MESSAGES=ru_RU.UTF-8 locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
...
LC_MESSAGES=ru_RU.UTF-8
...
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=