Arch-Linux
字元在終端(st)中無法正確顯示
在終端(我在 Arch Linux 上使用 st,is )輸入德語變音符號(
ä
,ö
, )時,它只顯示. 語言環境似乎設置正確。ü``$XTERM``st-256color``<ffffffff>
的輸出
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 LANG=de-DE.UTF-8 LC_CTYPE=de-DE.UTF-8 LC_NUMERIC="de-DE.UTF-8" LC_TIME="de-DE.UTF-8" LC_COLLATE="de-DE.UTF-8" LC_MONETARY="de-DE.UTF-8" LC_MESSAGES="de-DE.UTF-8" LC_PAPER="de-DE.UTF-8" LC_NAME="de-DE.UTF-8" LC_ADDRESS="de-DE.UTF-8" LC_TELEPHONE="de-DE.UTF-8" LC_MEASUREMENT="de-DE.UTF-8" LC_IDENTIFICATION="de-DE.UTF-8" LC_ALL=
在
locale.conf
我只設置LANG="de-DE.UTF-8" LC_CTYPE="de-DE.UTF-8"
在
locale.gen
我未註釋de-DE.UTF-8
的 . 哪裡會出錯?
實際的語言環境名稱在語言程式碼和國家程式碼之間有一個下劃線,即您
locale.conf
應該是:LANG="de_DE.UTF-8" LC_CTYPE="de_DE.UTF-8"
目前,您使用減號 (
-
) 而不是下劃線 (_
)。由於您的語言環境規範無效,因此系統只回退到 POSIX 語言環境和 US-ASCII 字元集。該
LANG
變數為所有其他語言環境設置預設值,因此只需設置LANG=de_DE.UTF-8
等效於將所有特定於類別的
LC_*
語言環境變數設置為相同的值,除非您使用任何變數覆蓋特定類別LC_*
。所以如果你設置了
LANG=de_DE.UTF-8
,你應該不需要,LC_CTYPE=de_DE.UTF-8
因為設置LANG
已經將它設置為新的預設值LC_CTYPE
。但是,如果您不喜歡翻譯錯誤消息並希望將它們保留為英文,您可能希望設置LC_MESSAGES=en_US.UTF-8
為僅覆蓋 LC_MESSAGES 類別的 LANG 值。命令的輸出
locale
也反映了這一點:它顯示所有類別特定變數設置為與目前LANG
設置相同(不正確)的值。
LC_ALL
是所有語言環境設置的主覆蓋:您通常會在一些管道中看到它,這些管道正在解析一些可能受本地化影響的命令輸出。為此類管道添加前綴LC_ALL=POSIX
或LC_ALL=en_US.UTF-8
保證腳本編寫者只需要為該特定語言環境設計輸出解析,而不管使用者使用的是哪個語言環境。