本文针对的问题是“Ubuntu 安装中文语言包”“Ubuntu Server中文问题”,“Ubuntu更改语言环境”,“Ubuntu locale的设定”,“cannot change locale (zh_CN.UTF-8)”,“Linux中文乱码”,“Linux字符集的修改”,“Linux乱码的解决办法”等问题,提供一站式解决。如果系统显示中文异常,例如出现显示中文乱码等,可以参考本文章。关于CentOS系统的修改办法,请参考文章末尾的描述。

问题描述

终端显示中文正常,应用程序里面显示中文异常。

错误表现

1
sudo dpkg-reconfigure locales

perl: warning: Setting locale failed.     
perl: warning: Please check that your locale settings:     
    LANGUAGE = "zh_CN:zh:en_US:en",     
    LC_ALL = "zh_CN.UTF-8",     
    LANG = "zh_CN.UTF-8"     
    are supported and installed on your system.     
perl: warning: Falling back to the standard locale ("C").     
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     
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)     
Generating locales...     
  en_US.UTF-8... /usr/sbin/locale-gen: line 177: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)     
up-to-date     
Generation complete.

1
man locale

man: can't set the locale; make sure $LC_* and $LANG are correct

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

1
$ localectl list-locales

C.UTF-8     
en_US.utf8     
zh_CN.utf8

问题解决办法

要想达到应用程序中正常显示中文字符的目的,要下面的三个变量应该如下,

1
2
3
LANG=zh_CN.UTF-8   
LANGUAGE=zh_CN:zh:en_US:en   
LC_ALL=LC_ALL=zh_CN.UTF-8

但问题在于“LC_ALL to default locale: No such file or directory”和“LC_ALL: cannot change locale (zh_CN.UTF-8) ”,因此重新安装中文语言包。

执行下面命令

1
sudo apt-get -y install language-pack-zh-hans

1
sudo apt-get -y install language-pack-zh-hans language-pack-zh-hans-base

如果想支持繁体字,则执行

1
sudo apt-get -y install language-pack-zh-hant

1
sudo apt-get -y install language-pack-zh-hant language-pack-zh-hant-base

再执行locale命令设置当前locale环境

1
locale

相关的文件和参考

相关手册:man locale(1), locale(5), locale(7)

相关文件:/usr/share/i18n/SUPPORTED

相关命令:

locale --all-locales 列出当前系统中所有支持的locale

localectl list-locales 列出当前系统中所有可用的locale

localectl set-locales LOCALE... 修改当前系统中的locale,与locale功能相同,与export上文提到的三个变量相同

对于CentOS,可以直接编辑/etc/sysconfig/i18n文件,将LANG="en_US.UTF-8"设置成LANG="zh_CN.UTF-8",除此之外,CentOS下locale命令的显示结果如下:

1
# 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=

其中,LC_ALL=为空,但并不是表示这里不对,而是LC_ALL=实际上等于LC_COLLATE、LC_CTYPE、LC_MONETARY、LC_MESSAGES、LC_NUMERIC、LC_TIME,参见locale(7)。

简单解决Ubuntu修改locale的问题的更多相关文章

  1. 红帽企业版RHEL7.1在研域工控板上,开机没有登陆窗口 -- 编写xorg.conf 简单三行解决Ubuntu分辩率不可调的问题

    红帽企业版RHEL7.1在研域工控板上,开机没有登陆窗口 没有登陆窗口 的原因分析: 没有登陆窗口的原因是因为有多个屏幕在工作,其中一个就是build-in 屏幕(内置的虚拟屏幕)和外接的显示器,并且 ...

  2. 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录

    解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区  作者:njchenyi [字体:大 中 小]   我是先安装了Ubuntu 12.04 Server,然后 ...

  3. 解决Ubuntu与Windows双系统时间不同步问题

    目录 1.Windows修改法 1.1设置UTC 1.2恢复LocalTime 2.Ubuntu修改法 2.1设置LocalTime 2.2恢复UTC 切换系统后,往往发现时间差了8小时.这恰恰是北京 ...

  4. 解决Ubuntu 12.10中ZIP文件名乱码的方法

    转摘源地址:http://blog.csdn.net/jiangxinyu/article/details/8206395 安装(12.04及以上): 代码: sudo apt-get install ...

  5. 解决ubuntu无法调整和保存屏幕亮度的问题

    整理自解决ubuntu无法调整和保存屏幕亮度的问题 ubuntu无法调整屏幕亮度,对笔记本来说很耗电,同时也很刺眼,因为它是默认以最大亮度来工作的. 所谓的调整,方法为下面的其中一种: 1.Fn+左右 ...

  6. linux 解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题

    解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题 http://www.lin ...

  7. Ubuntu修改密码之后无法登录

    问题:Ubuntu修改密码之后无法登录,停留在登录界面,输入正确的密码之后,画面一闪又回到了登录界面. 解决:ctrl+alt_f1进入终端,输入用户名和密码,$cd /home/userXXX &a ...

  8. 安装程序无法打开注册表项 UNKNOWN\Components\…的简单解决办法(转)

    安装程序无法打开注册表项 UNKNOWN\Components\…的简单解决办法 2018年04月16日 16:41:32 super_star_贤 阅读数:7193   在安装软件时(比如安装SQL ...

  9. 解决 Ubuntu 14.04 图形界面无法正常显示 问题

    参考: ubuntu清除系统缓存的方法 apt-get(四) 每天一个linux命令(33):df 命令 Ubuntu server 12.10 /dev/sda1 disk full 解决 Ubun ...

随机推荐

  1. (转)如何在maven环境中设置JVM参数

    有时候我们需要设定maven环境下的JVM参数,以便通过maven执行的命令或启动的系统能得到它们需要的参数设定.比如:当我们使用jetty:run启动jetty服务器时,在进行热部署时会经常发生:J ...

  2. [React + Functional Programming ADT] Connect State ADT Based Redux Actions to a React Application

    With our Redux implementation lousy with State ADT based reducers, it is time to hook it all up to a ...

  3. [Functional Programming ADT] Combine Multiple State ADT Based Redux Reducers

    Redux provides a convenient helper for combining many reducers called combineReducer, but it focuses ...

  4. linux-文件系统基本概念

    linux中全部数据都是用文件存储,存放在文件夹中,文件夹呈树状结构. (一)文件类型 1.普通文件 包含文本文件.源码文件及可运行文件等.linux中不区分文本和二进制文件. 2.文件夹 类似win ...

  5. 常用class 总结

    清除浮动 // Clearfix @mixin clearfix { &:before, &:after { content: " "; // 1 display: ...

  6. activemq集群搭建Demo

    activemq5.14.5单节点安装Demo 第一步:创建集群目录 [root@node001 ~]# mkdir -p /usr/local/activemqCluster 复制单点至集群目录 [ ...

  7. Sketch 介绍

        Sketch 插件大集合 -- Using Sketch Like A BOSS   这几天发现了一个叫做 Sketch Toolbox 的 Mac 应用,简直是下载和安装 Sketch 插件 ...

  8. Sublime Text 如何一个代码双屏显示代码上下部分?

    Sublime Text 如何一个代码双屏显示代码上下部分? sublime text如何一个代码双屏显示代码上下部分 先显示2行实图 把想要分屏显示的文件,打开新窗口,然后再拖过去就可以了. 快捷操 ...

  9. js 数组去重方法汇总

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  10. 我的Go语言学习之旅二:入门初体验 Hello World

    好吧,全部的程序猿们都已经习惯了.学习不论什么一门语言,我们都会以Hello World实例開始我们的学习,我也不例外.先来一个简单的样例 打开编辑器 (能够用记事本,我已经习惯 Notepad++了 ...