本文针对的问题是“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. windows下进程管理常用命令

    1.查看当前正在运行的进程 tasklist 注: /im 后为映像名称参数:/f  为强行终止,可以通过 taskkill /? 查看更多帮助 2.强制杀死映像名称为imagename的进程,映像名 ...

  2. jQuery-mobile 学习笔记之三(事件监听)

    续上 触摸事件 - 当用户触摸屏幕时触发(敲击和滑动) 滚动事件 - 当上下滚动时触发 方向事件 - 当设备垂直或水平旋转时触发 页面事件 - 当页面被显示.隐藏.创建.载入以及/或卸载时触发 一.初 ...

  3. [LeetCode] Add Two Numbers(stored in List)

    首先,演示一个错误的reverList class Solution { public: ListNode* reverse(ListNode* root) { if(NULL == root) re ...

  4. Unity 开发游戏编写代码的技巧

    在平时开发游戏过程中,遇到一些编写代码很繁琐的问题. 我发现我团队中每个人都会遇到,就算打写出来分享下经验. 条件断点 利用IDE提供的工具, 右键断点的时候 输入条件, 当条件达成的时候,断点才能命 ...

  5. 【PHP】组合条件搜索SQL

    前端html多个搜索条件组合 后台一个sql语句,很方便和简洁:仅提供思路. 也可以配合着进行分页操作,非常赞~

  6. SSH限制ip登陆

    linux限制IP访问ssh   在/etc/hosts.allow输入   (其中192.168.10.88是你要允许登陆ssh的ip,或者是一个网段192.168.10.0/24)   sshd: ...

  7. String、StringBuilder、StringBuffer对比

    参考:http://swiftlet.net/archives/1694 http://www.cnblogs.com/springcsc/archive/2009/12/03/1616326.htm ...

  8. CVTE电话面试

    Cvte电话面试 1. SVM和逻辑回归的相同不同点 2. 特征值和奇异值的区别 3. 如何找到全局最优解,梯度下降和牛顿法区别 4. 防止过拟合的方法 5. 随机森林和ADBOOST方差和偏置 6. ...

  9. input text 去掉标签下拉提示autocomplete

    autocomplete 属性 autocomplete 属性规定输入字段是否应该启用自动完成功能. 自动完成允许浏览器预测对字段的输入.当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在 ...

  10. linux 重启网卡的方法

    http://blog.163.com/drzxqing@126/blog/static/59351445201052392516841/