简单解决Ubuntu修改locale的问题

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

问题描述

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

错误表现

$ 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.

$ man locale

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

$ 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=

$ localectl list-locales

C.UTF-8    
en_US.utf8    
zh_CN.utf8

问题解决办法

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

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) ”,因此重新安装中文语言包。

执行下面命令

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

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

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

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

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

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

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命令的显示结果如下:

# 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)。

时间: 2024-10-10 08:33:22

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

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

解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区  作者:njchenyi [字体:大 中 小] 我是先安装了Ubuntu 12.04 Server,然后安装桌面.进入以后发现中文有问题. 解决方法:一. Ubuntu默认的中文字符编码Ubuntu默认的中文字符编码为zh_CN.UTF-8,这个可以在/etc/environment中看到:sudo gedit /etc/environment可以看到如下内容:PATH="/usr/local/sbin:

ubuntu 修改 ls 下的目录颜色

ubuntu 下, ls 显示的目录的颜色,怎么说呢,看起来太费劲了. 于是想着修改成容易识别的颜色. 于是搜索了一下. 这里列举三个搜到的教程吧. 简单说我按这上面的方法做了,然后都失败了. 1. http://blog.csdn.net/star11053234/article/details/8680530 这里有个ubuntu的截图,这个背景看着还没那么折磨人. 但是他中间粘了那么多代码,给人一种凑字的感觉. 最下面才说重点:到处颜色列表,修改目录的,把加载颜色列表的命令加载.bashr

解决 Ubuntu 开机 Waiting for 60 seconds more for network configuration

sudo vim /etc/network/interfaces, 将该文件的内容修改为如下:(也就是说删掉其他的什么auto eth0.auto wlan0) auto lo iface lo inet loopback 解决 Ubuntu 开机 Waiting for 60 seconds more for network configuration,码迷,mamicode.com 解决 Ubuntu 开机 Waiting for 60 seconds more for network co

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

转摘源地址:http://blog.csdn.net/jiangxinyu/article/details/8206395 安装(12.04及以上): 代码: sudo apt-get install unar 假设需要解压的ZIP包是foo.zip 代码: lsar foo.zip #列出所有文件 如果列出的文件名已经正确 代码: unar foo.zip #解压所有文件 如果列出的文件名还不正确 代码: lsar -e GB18030 foo.zip #指定使用GB18030编码列出所有文件

ubuntu修改主机名称+修改终端显示目录和计算机名称

一. 前言(直接忽视) ubuntu安装时,主机名称设置的是自己名字,用段时间觉得别扭,就想要改一下,这里记录一下这个过程 二. 参考链接 1. ubuntu 修改主机名    ----     http://blog.csdn.net/ruglcc/article/details/7802077 2.  怎么修改ubuntu终端显示目录和计算机名称    -----    http://www.21xitong.com/unix/226.html 三.ubuntu修改主机名 1. #hostn

解决Ubuntu输入密码后无法进入桌面,一直停留在登陆界面的问题

不知道今天做了些什么诡异的操作,刚才重启了Ubuntu之后,发现输入密码之后,闪了一下又回到了登陆界面,根本无法进入系统-心想完了,好不容易把Ubuntu弄得个人十分的满意,那不成要重新启动.不用不用,经过了1个小时的担惊受怕,问题终于解决,使得我能够现在在这里敲下这一篇博文! 网上说好像是说修改了什么系统变量,反正我不懂,百度了n就之后无解,换用谷歌,立马找到解决方案-- 在登陆界面按下Ctrl + Shift + F1 进入命令行模式,输入你的用户名和密码之后,敲入下面几行命令就可以了! $

解决ubuntu中firefox浏览器总是提示找不到服务器的问题

这个情况在我机器上经常出现,而且时不时的给你出点问题,但是有些时候等一下就好了,或者把引擎换到百度的话它就又行得通了.. 被这个问题搞得很烦,上网查了下说是防火墙啊之类的出问题,但是自己弄了后这个问题还是经常出现,不过好好查了下资料还是发现了问题所在,感觉这脑袋真的挺笨的.. 如果在ping其他主机,本地地址等一些地址后都没问题的话,那应该就是dns域名解析出了问题了. 查看dns域名解析配置文件: $cat /etc/resolv.conf 比如我的是这个信息: # Dynamic resol

如何解决Ubuntu与Windows双系统时间不同步

导读 不知道有没朋友跟我一样是 Ubuntu 和 Windows 双系统?今天有朋友问到我,当他从 Ubuntu 系统重新启动到 Windows 时,会发现 Windows 中的时间变了,他问我有没办法修复?其实我刚开始使用 Ubuntu 和 Windows 双系统时就遇到这个问题.下面我们就来解释一番. 为什么Ubuntu和Windows双系统会有时间差 之所以 Windows 与 Ubuntu 双系统之间有时间差,是因为这两个系统使用了不同的方式来识别硬件时钟(Hardware Clock)

解决Ubuntu系统下 mysql 远程连接失败的问题 ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xx.xx' (110)

如果远程连不上mysql.cnf 里面也修改了:bind注销掉了127.0.0.1 等所有的 但是telnet xxx.xxx.xx.xx 3306 端口 不通:那么 就是防火墙的问题了 1.修改Ubuntu系统防火墙规则 [[email protected] ubuntu]#vim /etc/iptables.rules 解决Ubuntu系统下 mysql 远程连接失败的问题 ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.x