Tôi đã thiết lập máy chủ Ubuntu 16.04 mới, nhưng khi tôi cố gắng thay đổi vĩnh viễn cài đặt ngôn ngữ, nó sẽ thất bại và trở lại vị trí POSIX.
Gõ locale
mang lại kết quả như sau:
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=
Theo hiểu biết của tôi, điều này có nghĩa là không có ngôn ngữ nào được đặt cả, vì tài liệu nói rằng POSIX là " mã hóa ngược, mã hóa ASCII, giống như C ".
Để đảm bảo các địa điểm de_AT.utf8
và en_US.utf8
có mặt trên hệ thống của tôi, tôi đã chạy locale -a
, kết quả:
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
Xin lưu ý sự không nhất quán với C.UTF-8
, nhưng de_AT.utf8
! Điều khiến tôi lo lắng hơn nữa là POSIX là mục thứ ba, trong khi trên một hệ thống làm việc khác, nó là danh sách cuối cùng.
Để thay đổi ngôn ngữ của tôi en_US.utf8
, tôi đã gõ sudo update-locale LANG=en_US.utf8
. Các locale
lệnh vẫn cho thấy miền địa phương POSIX. Sau khi đăng xuất và đăng nhập mới, locale
vẫn hiển thị miền địa phương POSIX. Sau khi khởi động lại, locale
vẫn hiển thị miền địa phương POSIX.
Tuy nhiên, khi tôi gõ export LANG=en_US.utf8
, nó hoạt động tạm thời, nhưng chỉ cho đến khi đăng xuất. Như vậy, tôi khá chắc chắn rằng các địa phương đã được tạo chính xác.
Tôi không có ý kiến. Tôi đã thử tái tạo tất cả các địa phương, nhưng có vẻ như /etc/default/locale
chỉ đơn giản là bị bỏ qua.
Để hoàn thành, /etc/default/locale
chỉ chứa dòngLANG=en_US.utf8
CẬP NHẬT: // Tôi đã thử chạy sudo localectl set-locale LANG=en_US.UTF-8
và localectl
cũng cho tôi thấy rằng nó đã đặt ngôn ngữ, nhưng ngay cả sau khi khởi động lại, locale
vẫn hiển thị các ký tự POSIX và không phải ASCII vẫn không được hiển thị chính xác.
systemd
cách : localectl set-locale LANG=C.UTF-8
?
/etc/pam.d
đó, nó sẽ hoạt động. Nhưng bây giờ là một hack, bạn có thể muốn tạo /etc/profile.d/mylocalesetting.sh
và thêm dòng export LANG=en_US.UTF-8
.
/etc/default/locale
được đọc bởi PAM. Bạn có thể vô hiệu hóa PAM?