感谢支持
我们一直在努力

Ubuntu修改locale问题解决

本文针对的问题是“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相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/122501.htm

赞(0) 打赏
转载请注明出处:服务器评测 » Ubuntu修改locale问题解决
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏