qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          Linux亂碼和數(shù)據(jù)庫亂碼的問題簡(jiǎn)單排查

           在本地的虛擬機(jī)環(huán)境一直湊合著用英文,今天想看看中文的東西都顯示亂碼,下定決心要把問題解決了。
            如果直接打印文本內(nèi)容,通過putty也會(huì)顯示亂碼。
            [ora11g@rac1 ~]$ cat aa.sh
            δ? ε??ο?θ?ζ―δ?δ??ζ?θ―
            [ora11g@rac1 ~]$
            這個(gè)時(shí)候很可能是putty的編碼轉(zhuǎn)換的問題,通過查看putty的設(shè)置,如上,可以看到應(yīng)該選為utf-8。
            選為UTF-8以后,重新打印,就沒有問題了。
            [ora11g@rac1 ~]$ cat aa.sh
            你好,這是一個(gè)測(cè)試
            第一個(gè)問題解決了,第二個(gè)問題又來了,來看看數(shù)據(jù)庫層面的亂碼問題。
            [ora11g@rac1 ~]$ sqlplus n1/n1
            SQL> select *from test;
            ID NAME
            ---------- -----------------------------
            1 ??????
            這個(gè)時(shí)候看看環(huán)境變量NLS_LANG的設(shè)置,如果為空,很可能會(huì)出問題。
            [ora11g@rac1 ~]$ echo $NLS_LANG
            [ora11g@rac1 ~]$
            簡(jiǎn)單設(shè)置一下,這個(gè)最好和數(shù)據(jù)庫層面的字符集要一致。
            [ora11g@rac1 ~]$ echo $NLS_LANG
            american_america.AL32UTF8
            再來查看一下,就沒有問題了。
            SQL> select *from test;
            ID NAME
            ---------- -----------------------------
            1 突破玩法界限
            當(dāng)然了,我的這個(gè)問題剛好數(shù)據(jù)庫層面是完全支持的,這樣就省去了很多額外的工作,如果數(shù)據(jù)庫層面的字符集不支持,那很可能就得重建庫來改變字符集了。
          select *from nls_database_parameters
          SQL> /
          PARAMETER                      VALUE
          ------------------------------ ----------------------------------------
          NLS_LANGUAGE                   AMERICAN
          NLS_TERRITORY                  AMERICA
          NLS_CURRENCY                   $
          NLS_ISO_CURRENCY               AMERICA
          NLS_NUMERIC_CHARACTERS         .,
          NLS_CHARACTERSET               AL32UTF8
          NLS_CALENDAR                   GREGORIAN
          NLS_DATE_FORMAT                DD-MON-RR
          NLS_DATE_LANGUAGE              AMERICAN
          NLS_SORT                       BINARY
          NLS_TIME_FORMAT                HH.MI.SSXFF AM
          NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
          NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
          NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
          NLS_DUAL_CURRENCY              $
          NLS_COMP                       BINARY
          NLS_LENGTH_SEMANTICS           BYTE
          NLS_NCHAR_CONV_EXCP            FALSE
          NLS_NCHAR_CHARACTERSET         AL16UTF16
          NLS_RDBMS_VERSION              11.2.0.3.0
          另外系統(tǒng)層面的亂碼,網(wǎng)上查看了一下,有些人建議修改/etc/sysconfig/i18n的設(shè)置。
            [ora11g@rac1 ~]$ cat /etc/sysconfig/i18*
            LANG="en_US.UTF-8"
            SYSFONT="latarcyrheb-sun16"
            如果修改為中文的,一定要注意設(shè)置的值,在我本地做測(cè)試,是不需要修改的,本身就支持,我修改的時(shí)候,竟然改錯(cuò)了,結(jié)果重新登錄及報(bào)了一大堆的錯(cuò)誤,如下:
            [ora11g@rac1 caipiao]$ su - ora11g
            Password:
            -bash: warning: setlocale: LC_CTYPE: cannot change locale (zn_CN.UTF-8): No such file or directory
            -bash: warning: setlocale: LC_COLLATE: cannot change locale (zn_CN.UTF-8): No such file or directory
            -bash: warning: setlocale: LC_MESSAGES: cannot change locale (zn_CN.UTF-8): No such file or directory
            -bash: warning: setlocale: LC_NUMERIC: cannot change locale (zn_CN.UTF-8): No such file or directory
            -bash: warning: setlocale: LC_TIME: cannot change locale (zn_CN.UTF-8): No such file or directory
            如果修改,應(yīng)該改為zh_CN,算是一個(gè)低級(jí)錯(cuò)誤。

          posted on 2014-09-04 09:51 順其自然EVO 閱讀(186) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 西昌市| 若羌县| 孟津县| 阿城市| 宣恩县| 长顺县| 土默特左旗| 宜昌市| 南部县| 蕲春县| 旬阳县| 商河县| 丰顺县| 股票| 商都县| 平邑县| 通城县| 巴东县| 社旗县| 阳山县| 广元市| 蕲春县| 卫辉市| 法库县| 元朗区| 县级市| 神农架林区| 武汉市| 张北县| 岑巩县| 平塘县| 包头市| 东安县| 秦皇岛市| 尖扎县| 尼木县| 海门市| 皋兰县| 文山县| 山阴县| 清水河县|