主页 > 服务器技术 > Linux中Locale及shell编码问题

Linux中Locale及shell编码问题

PDF版本

在Linux系统中,我们经常遇到如下错误:

warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

本文主要针对这个问题做一下简单介绍。

Locale是linux系统中多语言环境的设置接口,Locale根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。
locale把按照所涉及到的文化传统的各个方面分成12个大类,这12个大类分别是:

1、语言符号及其分类(LC_CTYPE)
2、数字(LC_NUMERIC)
3、比较和排序习惯(LC_COLLATE)
4、时间显示格式(LC_TIME)
5、货币单位(LC_MONETARY)
6、信息主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等(LC_MESSAGES)
7、姓名书写方式(LC_NAME)
8、地址书写方式(LC_ADDRESS)
9、电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式 (LC_MEASUREMENT)
11、默认纸张尺寸大小(LC_PAPER)
12、对locale自身包含信息的概述(LC_IDENTIFICATION)。

Locale的详细参数如下:

[oracle@game ~]$ 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=en_US.UTF-8

设定Locale
设定locale就是设定12大类的locale分类属性,即12个LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL和LANG。它们之间有一个优先级的关系:LC_ALL > LC_* >LANG。可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。

遇到的问题
但是我们经常会遇到如下错误:
warning: setlocale: LC_CTYPE: cannot change locale (UTF-8) 解决办法

tab索引错误:
./bas-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

其他错误:
erl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = “UTF-8″,
LANG = “en_US.UTF-8″
are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).

解决办法
echo $SHELL
sudo chsh -s your_shellpath your_username
source .bashrc

这样就完全正常工作了,弄起来也舒服多了,


声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。
本文有效链接: http://www.drupal001.com/2012/04/shell-utf8/
版权所有: Drupal与高性能网站架构 http://www.drupal001.com


,

评论:3

发表评论
  1. avatar
    回复 nathan
    12/05/02

    发现了一些新的问题,以上办法有时不能够解决问题,继续补充一下方法,这样就能汇总的更全一些。
    方法如下:
    在用户目录下找到 ~/.bash_profile 如果没有这个文件那就找到~/.profile 文件

    在里面添加一下内容,然后登出从新登陆便会解决

    export LC_CTYPE=”en_US.UTF-8″

    • avatar
      回复 kaka
      16/03/15

      这个方法亲测有效!谢谢博主。想把这个办法跟其他一些解决办法总结一下写到自己博客。

  2. avatar
    回复 luckr
    12/07/20

    用了楼主说的,还是不行。朱大虾的说法很不给力啊。
    我用了以下代码,OK了。

    export LANGUAGE=en_US.UTF-8
    export LANG=en_US.UTF-8
    export LC_ALL=en_US.UTF-8
    

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注


+ 一 = 10

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

引用:0

下面所列的是引用到本博客的链接
Linux中Locale及shell编码问题 来自 Drupal与高性能网站架构
顶部