MENU

Debian/Ubuntu 初始编码设置

November 14, 2018 • Linux

之前线上服务器用的发行版一直用的是 centos 7,在安装过后一直没遇到编码问题。最近转用 Debian/Ubuntu ,发现在系统安装过后需要对系统编码进行一些设置,才能保证中文的正常使用

下面的命令运行环境为 Debian 8

命令行无法输入中文

出现这样的情况大概率是因为系统的语言包不全,执行下面的步骤:

  • 安装 locales
sudo apt-get -y install locales

如出现 sudo: not found,运行下面的命令安装 sudo 后再执行上面的命令

sh -
apt-get install -y sudo
exit
  • 进入配置界面
dpkg-reconfigure locales

会进入如下界面

  • 按空格选中下面几项,然后按 Tab 键选择 OK,确定
    • en_US.UTF8
    • zh_CN GB2312
    • zh_CN.GBK GBK
    • zh_CN.UTF-8 UTF-8

  • 接下来设置默认 localeen_US.UTF8,确定后 重启完成设置

也可以选 All locales,不过生成的语言包会比较大;
或者用命令 locale-gen zh_CN.UTF-8 一个一个生成。


2019-02-13 更新:如果不想手动配置,可运行下面的命令(仅限 Debian8+/Ubuntu

sudo apt-get -y install locales

sed -i 's/^# \(en_US\.UTF-8 UTF-8\)/\1/' /etc/locale.gen
sed -i 's/^# \(zh_CN GB2312\)/\1/' /etc/locale.gen
sed -i 's/^# \(zh_CN\.GBK GBK\)/\1/' /etc/locale.gen
sed -i 's/^# \(zh_CN\.UTF-8 UTF-8\)/\1/' /etc/locale.gen
locale-gen

# 一行版
sudo apt-get -y install locales && sed -i 's/^# \(en_US\.UTF-8 UTF-8\)/\1/' /etc/locale.gen && sed -i 's/^# \(zh_CN GB2312\)/\1/' /etc/locale.gen && sed -i 's/^# \(zh_CN\.GBK GBK\)/\1/' /etc/locale.gen && sed -i 's/^# \(zh_CN\.UTF-8 UTF-8\)/\1/' /etc/locale.gen && locale-gen

更新时出现 locale 警告

一般经过上面的设置就可以正常使用中文了,但如果在执行软件安装更新命令时还出现下面警告:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "zh_CN.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").

执行下面步骤解决:

  • 如果是 bash,添加下面的内容到 .bashrc 文件中
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
  • 如果是 zsh 则添加下面的内容到 .zshrc 文件中
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8
  • 执行 source .bashrcsource .zshrc 命令使配置文件生效。

  • 检验:输入如下命令,不输出错误即为正常。

perl -e exit
Last Modified: February 13, 2019
Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment

2 Comments
  1. myself myself

    评论测试@(滑稽)

    1. @myself回复测试(=・ω・=)