linux字符集的一個問題

liujinwei633發表於2009-03-09
    今天開發人員說,新部署的weblogic系統生成的xml檔案釋出出來中文是亂碼。經檢查發現如下:
        1.3臺weblogic叢集的機器都有同樣的問題。
        2.而原有系統上的xml檔案正常。
        3.將此亂碼檔案ftp下來直接用文字編輯器開啟,中文能正常顯示。
        4.將原來伺服器的xml檔案ftp到新的伺服器上,也正常。
        5.將新伺服器上有問題的xml傳到原來的伺服器,不能正常解析。
         6.新舊伺服器上xml檔案的內容一致
        
感覺可能是xml檔案生成時出的問題,可能是新舊伺服器上xml檔案的字符集不同。
舊伺服器上
[root@test1 ~]# locale
LANG=zh_CN.UTF-8
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=

而在新伺服器上
[root@bbs ~]# locale
LANG=zh_CN
LC_CTYPE="zh_CN"
LC_NUMERIC="zh_CN"
LC_TIME="zh_CN"
LC_COLLATE="zh_CN"
LC_MONETARY="zh_CN"
LC_MESSAGES="zh_CN"
LC_PAPER="zh_CN"
LC_NAME="zh_CN"
LC_ADDRESS="zh_CN"
LC_TELEPHONE="zh_CN"
LC_MEASUREMENT="zh_CN"
LC_IDENTIFICATION="zh_CN"
LC_ALL=

怎麼沒有了utf8了呢???
檢查i18n,發現新舊機器上都是 LANG=zh_CN.UTF-8
修改新機器的i18n,發現不管改成什麼,都不起作用。懷疑是i18n後別的地方又設定了LANG

  1.檢查使用者目錄下的profile,沒有發現
 2.檢查/etc/profile發現:它依次去執行/etc/profile.d目錄下的指令碼.檢查這些指令碼,發現其中有個lang.sh指令碼讀取了i18n的設定;繼續檢查profile指令碼,結果在指令碼最後發現瞭如下:
  LANG=c
  LANG=zh_CN

註釋掉這兩行,系統終於正常了.

shit,某些人隨便修改/etc/profile造成的問題.
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/32939/viewspace-564898/,如需轉載,請註明出處,否則將追究法律責任。

相關文章