某些字符无法在标准输出中打印

某些字符无法在标准输出中打印

我正在使用服务器(通过 ssh),由于我是法国人,所以我希望能够使用诸如“à”、“ç”和“é”之类的字符。但是,它们根本无法打印在标准输出中,无论是当我按下键盘上的相应键时(它只是忽略该键),还是当我运行应该打印它们的脚本时。例如,Python 脚本将引发:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-3: ordinal not in range(128)

根据一些建议,我查看了区域设置:

$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

因此我打开了 /etc/default/locale 文件,并将其从以下内容更改为:

LANG="C"

LANG=fr_FR.UTF-8

它仍然不起作用,但是对区域设置的调用现在告诉我:

$ 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=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

有什么想法可以修复此问题吗?

答案1

您还需要通过生成 fr_FR.UTF-8 区域设置来摆脱这些区域设置错误:

sudo locale-gen fr_FR.UTF-8

答案2

通过以下命令解决了该问题:

sudo update-locale LANGUAGE=fr_FR.UTF-8
sudo update-locale LANG=fr_FR.UTF-8

相关内容