尽管它在ubuntu的/ etc / default / locale中支持unicode,但如何在语言环境中设置LANG?


8

我跑步了Ubuntu 12.04,我不能将地区设置为en_US.utf8。我设置了LANG通过配置/etc/default/locale描述这里

$cat /etc/default/locale
LANG=en_US.utf8
$locale
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=POSIX

但是,如上所述,它不起作用。如何将此LANG变量设置为en_US.utf8

我问的原因是,当我运行时echo -e "\x03\bb",可以unicode greek letter lambda symbol正确显示,但是我的问题是emacs。在emacs中,我无法显示unicode符号,例如:C-x 8 RET 03bboutputs \u03bb,而不是a greek letter lambda symbol。我认为问题出在这些语言环境设置,但我无法设置它们。

编辑:我认为问题已解决。

$su $USER -c 'env; echo ==; locale' | egrep '==|LANG'

LANG=en_US
LANGUAGE=en_US
==
LANG=en_US
LANGUAGE=en_US

对我来说,解决方案是,我正在使用mintty ssh进入Ubuntu 12.04 Server Edition,因此必须配置~/.pam_environmentand ~/.etc/ssh_config和and ~/bashrc。但是我与emacs的真正问题不在于此ubuntu配置,因此我不知道此LANG变量配置用于什么 或是否将其设置为正确的值。

编辑2: 以下是我为解决此问题而采取的步骤,遵循#ubuntu irc频道中ansivirus的建议:

将此添加到 ~/.bash_profile

export LANGUAGE="en"
export LANG="C"
export LC_MESSAGES="C"

将此添加到~/.pam_environment(因此这一定是有问题的)

LANG=en_US
LANGUAGE=en_US

将此添加到 /etc/ssh/sshd_config

UsePAM yes

在此注释掉 /etc/ssh/ssh_config

#   SendEnv LANG LC_*

输出是su $USER -c 'env; echo ==; locale' | egrep '==|LANG'什么?您是否正在使用默认的GUI环境(Unity)(如果未使用)以及什么显示管理器?
吉尔斯(Gilles)'所以

LANG运行时是否存在,su但通过SSH登录时却不存在?你改变了什么?请注意,这en_US不是Unicode语言环境。
吉尔(Gilles)'所以

@Gilles,请参阅我的edit2。在采取了这些步骤之后,我认为LANG会成为一种礼物,但是我不知道它会产生什么影响,而且我也不在乎,因为emacs是固定的,并且我可以看到unicode字符很好,我很乐意为您解释这些变量的含义以及它们的影响,谢谢。
2014年

还要注意,这些并不能解决我的emacs问题,毕竟这是一个emacs问题。
2014年

1
可能与以下内容有关:语言环境的正确拼写是AFAIK en_US.UTF-8,而不是.utf8
Jan Henke

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.