LMDE2 / MATE 语言环境字符集不一致

LMDE2 / MATE 语言环境字符集不一致

我有一台装有 Linux Mint Debian Edition 2“Betsy”(作为 RC 安装,应用了所有可用更新)和 MATE 桌面环境的计算机。我的问题是,在某些应用程序中,我的母语(波兰语)使用的特殊字符,并且,因为我有一些包含的文件夹和文件未正确处理。

更具体地说:在 mate-terminal、pluma(MATE 文本编辑器)和 caja(文件管理器)以及可能还有其他一些我只是碰巧没有检查过的地方,通常由 Alt+letter 输入的任何波兰语特殊字符都会被忽略(没有打印字符——在pluma和caja中)或用问号替换(在mate-terminal中)。即使是 vim,当在 mate-terminal 中运行时,也会以这种方式运行,即用问号替换特殊字符。

我不认为这是一个系统范围的问题。为什么?因为当我切换到另一个 tty 并尝试在终端中输入这些特殊字符时,我没有遇到任何问题。 mate-terminal 显示的文件夹与zdj?cia另一个 tty 中显示的文件夹是正确标记的zdjęcia。看起来问题似乎是 MATE 特定的,因为 vim 在终止符中运行时不会导致任何问题。

此外,我尝试通过以下方式进行调试:在 mate-terminal 中,我列出了我的主目录(包含带有波兰语特殊字符的文件和目录)并将输出重定向ls到测试文件。然后我切换到另一个 tty 和cat测试文件——字符打印正确。

我已经尝试过了dpkg-reconfigure locales。语言包已通过 MATE 控制中心安装(并在此过程中重新安装)。

接下来我要尝试什么?

编辑:

mate-terminal图形环境中:

$ 语言环境
区域设置:无法将 LC_ALL 设置为默认区域设置:没有这样的文件或目录
LANG=en_GB.UTF-8
语言=
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC=\"pl_PL.UTF-8\"
LC_TIME=en_GB.UTF-8
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY=\"pl_PL.UTF-8\"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER=\"pl_PL.UTF-8\"
LC_NAME=\"pl_PL.UTF-8\"
LC_ADDRESS=\"pl_PL.UTF-8\"
LC_TELEPHONE=\"pl_PL.UTF-8\"
LC_MEASUREMENT=\"pl_PL.UTF-8\"
LC_IDENTIFICATION=\"pl_PL.UTF-8\"
LC_ALL=

在 tty1 中(字符编码工作正常):

$ 语言环境
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC=pl_PL.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY=pl_PL.UTF-8
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER=pl_PL.UTF-8
LC_NAME=pl_PL.UTF-8
LC_ADDRESS=pl_PL.UTF-8
LC_TELEPHONE=pl_PL.UTF-8
LC_MEASUREMENT=pl_PL.UTF-8
LC_IDENTIFICATION=pl_PL.UTF-8
LC_ALL=

编辑:

grep -Rs pl_PL /etc ~/.?*删除“二进制文件 x 匹配模式”并通过管道传输后,产生sort | uniq

/etc/默认/区域设置
/etc/locale.alias
/etc/locale.gen
/etc/mdm/locale.conf
/home/marta/../marta/.bash_history
/home/marta/../marta/.config/user-dirs.locale
/home/marta/../marta/.linuxmint/mintMenu/apt.cache
/home/marta/../marta/.pam_environment
/home/marta/../marta/.xsession-errors
/home/marta/.bash_history
/home/marta/.config/user-dirs.locale
/home/marta/.linuxmint/mintMenu/apt.cache
/home/marta/.pam_environment
/home/marta/.xsession-errors

是的,这台电脑实际上不是我的,但没关系:)

另一个编辑:

包含区域设置的文件的内容:

$ 猫 /etc/default/locale
LANG="en_GB.UTF-8"
LANGUAGE="en_GB:en"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_NAME =“pl_PL.UTF-8”
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
$ cat /home/marta/.pam_environment
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME=en_GB.UTF-8
LC_MONETARY="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_NAME =“pl_PL.UTF-8”
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
$ cat /home/marta/.config/user-dirs.locale
pl_PL

答案1

您可能有一个 .pam_environment 文件,其中 LC_ 变量的值用双引号引起来:

# WRONG
LC_TIME="en_US.UTF-8"

相反,它应该看起来像这样(没有引号):

LC_TIME=en_US.UTF-8

因此,要么删除 .pam_environment 文件

mv ~/.pam_environment ~/.pam_environment.off

或编辑它以删除值周围的双引号:

perl -i.bak -pe 's/"//g' ~/.pam_environment

有关详细信息,请参阅此:“生成的语言环境文件不得包含双引号“ 在 Github 上的 linuxmint/mintlocale 中

相关内容