linux亂碼和資料庫亂碼的問題簡單排查
如果直接列印文字內容,透過putty也會顯示亂碼。
[ora11g@rac1 ~]$ cat aa.sh
δ? ε??ο?θ?ζ―δ?δ??ζ?θ―
[ora11g@rac1 ~]$
這個時候很可能是putty的編碼轉換的問題,透過檢視putty的設定,如上,可以看到應該選為utf-8。
選為UTF-8以後,重新列印,就沒有問題了。
[ora11g@rac1 ~]$ cat aa.sh
你好,這是一個測試
第一個問題解決了,第二個問題又來了,來看看資料庫層面的亂碼問題。
[ora11g@rac1 ~]$ sqlplus n1/n1
SQL> select *from test;
ID NAME
---------- -----------------------------
1 ??????
這個時候看看環境變數NLS_LANG的設定,如果為空,很可能會出問題。
[ora11g@rac1 ~]$ echo $NLS_LANG
[ora11g@rac1 ~]$
簡單設定一下,這個最好和資料庫層面的字符集要一致。
[ora11g@rac1 ~]$ echo $NLS_LANG
american_america.AL32UTF8
再來檢視一下,就沒有問題了。
SQL> select *from test;
ID NAME
---------- -----------------------------
1 突破玩法界限
當然了,我的這個問題剛好資料庫層面是完全支援的,這樣就省去了很多額外的工作,如果資料庫層面的字符集不支援,那很可能就得重建庫來改變字符集了。
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
另外系統層面的亂碼,網上檢視了一下,有些人建議修改/etc/sysconfig/i18n的設定。
[ora11g@rac1 ~]$ cat /etc/sysconfig/i18*
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
如果修改為中文的,一定要注意設定的值,在我本地做測試,是不需要修改的,本身就支援,我修改的時候,竟然改錯了,結果重新登入及報了一大堆的錯誤,如下:
[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
如果修改,應該改為zh_CN,算是一個低階錯誤。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1347039/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 插入資料庫亂碼問題資料庫
- Mysqldump匯出亂碼問題排查MySql
- pdo_mysql 資料庫亂碼問題MySql資料庫
- 華納雲 如何解決Linux 資料庫亂碼問題?Linux資料庫
- SqlServer資料庫中文亂碼問題解決SQLServer資料庫
- mysql資料庫concat拼接字串亂碼問題MySql資料庫字串
- java Socket接收資料亂碼問題Java
- BW資料匯入亂碼問題
- flex亂碼問題Flex
- mysql亂碼問題MySql
- TOMCAT 請求資料編碼亂碼 問題Tomcat
- 資料庫亂碼解決資料庫
- asp.net查出 oracle資料庫中的中文亂碼問題ASP.NETOracle資料庫
- 解決pl/sql developer中資料庫插入資料亂碼問題SQLDeveloper資料庫
- javaweb 中的亂碼問題JavaWeb
- MySQL資料匯入匯出亂碼問題MySql
- EasyUI 中文亂碼問題UI
- MSSQL中文亂碼問題SQL
- Java 中文 亂碼問題Java
- SSM解決中文存入資料庫亂碼問題(記錄自己的問題)SSM資料庫
- 解決Hibernate向MySQL資料庫插入中文亂碼問題MySql資料庫
- SSH連線Linux中文亂碼問題Linux
- flashfxp 亂碼,2種辦法解決flashfxp 亂碼問題
- request的get和post引數亂碼問題
- 如何解決表單提交的中文亂碼問題
- SpringMVC中文亂碼問題SpringMVC
- 解決SSH亂碼問題
- isqlplus亂碼問題SQL
- Python中文亂碼問題Python
- secureCRT顯示亂碼問題Securecrt
- Cookie值中文亂碼問題Cookie
- EM按鈕亂碼問題
- 解決中文亂碼問題
- C語言連線mysql資料庫查詢中文的資料表亂碼問題C語言MySql資料庫
- 資料遷移(MYSQL--ORACLE)中碰到的亂碼問題MySqlOracle
- 記錄一次亂碼問題修復經歷!排查修復Poi-tl使用HttpServletResponse匯出Word亂碼問題HTTPServlet
- python資料亂碼Python
- springMVC儲存資料到mysql資料庫中文亂碼問題解決方法SpringMVCMySql資料庫