本文针对的问题是“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. java回调简单实现

    package data; import java.util.HashMap; import java.util.Map; public class Good { CallBack callBack; ...

  2. 解复用-mpeg2

    http://blog.csdn.net/yipie/article/details/7612226 数字高清晰度电视(High Definition Television)简称HDTV,是继黑白电视 ...

  3. vue - 条件语句

    1.与小程序不同之处一,小程序无论变量还是常亮都可以用双向绑定来解决{{}},而vue一旦双(单)引号包起来以后就失效了. 2.注意一点,切记双引号注意不要混淆哈,这里是一排双引号包单引号,那里是一排 ...

  4. Spring中AOP的理解

    1.AOP的概念 AOP(AspectOriented Programming,面向切面编程)指的是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下个程序动态统一添加功能的一种技术.AOP ...

  5. Unity3D研究院之DontDestroyOnLoad的坑

    http://www.xuanyusong.com/archives/2938 Unity中的一个方法DontDestroyOnLoad可以让某些游戏对象在切换场景的时候不是施放,听起来是一个非常好的 ...

  6. webSQL 实现即时通讯

    websql存储方式一共有以下几个方法 openDatabase:这个方法使用现有的数据库或新建数据库来创建数据库对象. transaction:这个方法允许我们执行事务处理; executeSql: ...

  7. url 传值

    js获取url参数值: index.htm?参数1=数值1&参数2=数值2&参数3=数据3&参数4=数值4&...... 静态html文件js读取url参数 根据获取h ...

  8. canvas锯齿

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. C++从零实现简单深度神经网络(基于OpenCV)

    代码地址如下:http://www.demodashi.com/demo/11138.html 一.准备工作 需要准备什么环境 需要安装有Visual Studio并且配置了OpenCV.能够使用Op ...

  10. Win7 + vs2012 + cocos2d-x2.2 配置开发环境

    昨天開始打算学习Cocos2d-x,首先肯定是要在自己的电脑上配置开发环境.昨天折腾了一天,以下将自己在当中遇到的问题与解决方法跟大家分享一下.大多数会遇到的问题,我都遇到了....     1.安装 ...