查看当前编码

# 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就是允许向终端直接输入中文;

[ 编辑 | 历史 ]
最近由“jilili”在“2020-10-11 05:44:51”修改