主頁 > 服務器技術 > 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.tbdskt.live/2012/04/shell-utf8/
版權所有: Drupal與高性能網站架構 http://www.tbdskt.live


,

評論: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
    

發表評論

電子郵件地址不會被公開。 必填項已用 * 標注


六 + 3 =

您可以使用這些 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與高性能網站架構
頂部
四川时时彩投注平台