Oracle:sqlplus查询出的中文是乱码问题的解决(转)
有一臺遠程服務器不能通過Oracle客戶端遠程登陸,只能通過Secure CRT的ssh登陸(估計原因是1521端口被封)。在這種情況下要select數據
就只能先ssh到遠程服務器,然后運行sqlplus了。
登陸進sqlplus以后,執行select語句,英文都是正常的,但中文全都是????。
問題解決:
首先,確定問題的原因所在:是字符集的問題是肯定的了,但問題是那里的字符集設置有錯誤。
在sh下# locale
LANG=zh_CN.GB18030
LC_CTYPE="zh_CN.GB18030"
LC_NUMERIC="zh_CN.GB18030"
LC_TIME="zh_CN.GB18030"
LC_COLLATE="zh_CN.GB18030"
LC_MONETARY="zh_CN.GB18030"
LC_MESSAGES="zh_CN.GB18030"
LC_PAPER="zh_CN.GB18030"
LC_NAME="zh_CN.GB18030"
LC_ADDRESS="zh_CN.GB18030"
LC_TELEPHONE="zh_CN.GB18030"
LC_MEASUREMENT="zh_CN.GB18030"
LC_IDENTIFICATION="zh_CN.GB18030"
LC_ALL=
這些值都是可以正確顯示中文的。應該不是操作系統字符集的問題。
那么肯定就是Oracle字符集設置的問題了。于是就聯想到導出數據庫時:EXP-00091錯誤也是由于字符集環境設置的問題。
sh下執行$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
再進入sqlplus查詢,中文果然顯示正常了。
至此,問題順利解決。
使用sqlplus的一些竅門:
★ 由于sqlplus對行寬的設置比較小,所以查出來的記錄的列名和值自動折行,都擠在一個非常小的寬度內,非常難看。
SQL> set linesize 32767
這樣就把行寬設置為最大。在sqlplus的范圍內一般不會自動折行了。
但由于Secuer CRT 也有行寬的設置,所以還是會堆在一起。這個問題比較簡單。
設置Secuer CRT 行寬,或把結果粘貼Editplus中,就一行是一行的顯示了。
?
轉載于:https://www.cnblogs.com/hssbsw/archive/2008/09/07/1285905.html
總結
以上是生活随笔為你收集整理的Oracle:sqlplus查询出的中文是乱码问题的解决(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何覆盖文件(如何修改源码&gt
- 下一篇: 《红霞岛》Steam 玩家流失严重,24