本文针对的问题是“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. sqlmap dvwa SQL Injection使用小记

    刚刚开始学习sql injection,初步使用sqlmap,使用 GET http://www.dvssc.com/dvwa/vulnerabilities/sqli/?id=1&Submi ...

  2. [转]php中实现事件驱动

    原文: https://blog.csdn.net/yhl27/article/details/8705313 -------------------------------------------- ...

  3. 1069: [SCOI2007]最大土地面积|旋转卡壳

    旋转卡壳就是先求出凸包.然后在凸包上枚举四边形的对角线两側分别找面积最大的三角形 因为在两側找面积最大的三角形的顶点是单调的所以复杂度就是n2 单调的这个性质能够自行绘图感受一下,似乎比較显然 #in ...

  4. minic 类型声明与变量定义句型处理

    #include "token_define.h" //这个文件是用来处理句型的,对于算术表达式都是放在前面的那个头文件中来处理 typedef struct _handle_tr ...

  5. websphere中的会话超时设置 和 web应用中web.xml中session-timeout关系

    Tomcat默认的会话的超时时间设置 设置Tomcat session有效期的三种方式有: 1.在tomcat/conf/web.xml中修改session-timeout的值,该设置是TOMCAT全 ...

  6. 程序猿的职场潜意识Top10

    什么叫潜规则?事实上就是不明文规定的一些规则,关键是他没法明文规定,由于有的规则太没节操. 在我们职场中有些规则你不遵守将举步艰难.而要玩转这些潜规则.那么你必需要具备例如以下10个潜意识: 1.项目 ...

  7. SchemaExport

    不在xml中配置         <!-- Drop and re-create the database schema on startup         <property name ...

  8. expect脚本免密码

    #!/usr/bin/expect set timeout spawn ssh root@20.0.102.19 expect "password:" send "123 ...

  9. Request to https://bower.herokuapp.com failed with 502

    bower 版本过低,需要升级为最新bower版本, 如果升级版本后依然无法使用,更改.bowerrc配置,如下所示 { "directory": "bower_comp ...

  10. python oop面向对象笔记

    #coding:utf-8 class Person(object): def __init__(self,name,wage): self.name = name self.wage = wage ...