У мене встановлений свіжий сервер Ubuntu 16.04, але коли я намагаюся остаточно змінити параметри локалі, він виходить з ладу і повертається назад до локальної точки POSIX.
Введення тексту locale
дає наступне:
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
Наскільки мені відомо, це означає, що локаль не встановлений взагалі, оскільки в документації зазначено, що POSIX - це " запасне кодування ASCII, те саме, що і C ".
Щоб переконатися в локалі de_AT.utf8
та en_US.utf8
моїй системі, я побіг locale -a
, що дало:
C
C.UTF-8
POSIX
de_AT.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
Зверніть увагу на невідповідності C.UTF-8
, але de_AT.utf8
! Що мене ще більше хвилює, це те, що POSIX - це третій запис, а в іншій робочій системі - останній у списку.
Для того, щоб змінити мову en_US.utf8
, я ввів sudo update-locale LANG=en_US.utf8
. locale
Команда все ще показали локаль POSIX. Після виходу та нового входу locale
все ще показали локаль POSIX. Після перезавантаження locale
все ще показав локаль POSIX.
Однак, коли я набираю текст export LANG=en_US.utf8
, він працює тимчасово, але лише до виходу. Як такий, я майже впевнений, що локалі були створені правильно.
Я поза ідеями. Я намагався регенерувати всі локалі, але, схоже, /etc/default/locale
просто ігнорується.
Для завершення /etc/default/locale
містить лише рядокLANG=en_US.utf8
ОНОВЛЕННЯ: // Я спробував запустити sudo localectl set-locale LANG=en_US.UTF-8
, а localectl
також показав мені, що він встановив локаль, але навіть після перезавантаження locale
все ще показує, що символи POSIX, а символи, які не є ASCII, все ще не відображаються правильно.
systemd
спосіб localectl set-locale LANG=C.UTF-8
:?
/etc/pam.d
, він повинен працювати. Але як хак зараз ви можете створити /etc/profile.d/mylocalesetting.sh
та додати рядок export LANG=en_US.UTF-8
.
/etc/default/locale
читається PAM. Ви, можливо, відключили PAM?