Arch-Linux

字元在終端(st)中無法正確顯示

  • May 13, 2022

在終端(我在 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=POSIXLC_ALL=en_US.UTF-8保證腳本編寫者只需要為該特定語言環境設計輸出解析,而不管使用者使用的是哪個語言環境。

引用自:https://unix.stackexchange.com/questions/702342