查看当前编码
# locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=
更改编码
可通过环境变量LANG或者LC_ALL进行设置,如果设置了LANG其它项将自动被设置除LC_ALL;如果设置了LC_ALL所有项将同时被设置;
export LANG=en_US.UTF-8
如果不知道目前系统中有哪些支持的编码,可通过locale -a
命令进行查看
写入配置文件
如果你将改变写入配置文件,请继续看,不同的操作系统版本有些出入
CentOS 7
CentOS 7先检查/etc/locale.conf
,其中的内容一般为:
LANG="en_US.UTF-8"
其次将检查$HOME/.i18n
文件,可设置其内容为:
LANG="en_US.UTF-8"
CentOS 6
CentOS 6先检查/etc/sysconfig/i18n
,其中的内容一般为:
LANG="zh_CN.UTF-8"
其次将检查$HOME/.i18n
文件,可设置其内容为:
LANG="zh_CN.UTF-8"
Ubuntu
Ubuntu先检查/etc/default/locale
,其中的内容一般为:
LANG="en_US.UTF-8"
配置前请先检查支持的编码,使用locale -a
查看,如果你配置了当前locale不支持的编码,请先执行:
$ sudo locale-gen zh_CN.UTF-8
这个命令将加入zh_CN.UTF-8的支持,完成后同样使用locale -a
查看。
Debian 9
安装支持
apt-get install locales -y
配置和确认
dpkg-reconfigure locales locale
或者
localectl localectl list-locales localectl set-locale LANG=en_US.utf8 source /etc/default/locale
修改输入配置
在有些默认情况下会过滤和转义输入所以会发生能显示中文,却不能在命令行输入的问题。
vim .inputrc set meta-flag on set convert-meta off set input-meta on set output-meta on source . inputrc
完成后就好了,下面解释下
- meta-flag on 允许从终端输入中文,否则的话终端会过滤掉每个字节的最高位;
- convert-meta off是设置不将中文字符转化为转义序列,因为中文是两个字节表示的,第一字节的最高位是1开头的,可以能同于某个转义字符;
- output-meta on就是允许向终端直接输出中文;
- input-meta on就是允许向终端直接输入中文;
相关内容
· Linux