oracle資料庫查詢亂碼問題

2021-09-27 05:57:44 字數 1285 閱讀 9115

rdbms 11.2.0.4

昨天運維提出了乙個問題,在securecrt上執行乙個查詢的時候返回0,但是在plsql developer上查詢的時候,返回是有值的。

這個語句中有個條件,where status in ('漢字1','漢字2','漢字3'); 懷疑是字符集的問題,導致傳送到伺服器上的時候是亂碼,按照這寫亂碼進行條件查詢,當然查詢不到了。

在其他的客戶端查詢也是這個問題。

查詢資料庫的字符集。通過檢視v$nls_parameters查詢出nls_date_language是simplified chinese,nls_characterset是al32utf8。

在作業系統上設定變數

在作業系統上設定nls_lang為simplified chinese.al32utf8

[oracle@oralinux1 ~]$ export nls_lang="simplified chinese.al32utf8"

[oracle@oralinux1 ~]$ env | grep nls_lang

nls_lang=simplified chinese.al32utf8

[oracle@oralinux1 ~]$

登入sqlplus 再次檢視結果(之前查詢所有的漢字顯示都是問號或亂碼)

[oracle@oralinux1 ~]$ sqlplus /nolog

sql*plus: release 11.2.0.4.0 production on 星期三 9月 18 01:26:56 2019

sql> conn ***x/***xx

connected.

sql> select id,name from sys_using_info;

id name

---------- --------------------

111 你好

112 你壞

113117 弄不好

118 你不壞

119 滾蛋

121 哈哈

123 呵呵

109 噼里啪啦

110 哦哦

115 按按

id name

---------- --------------------

116 各個

114 的的

120 開機啊

122 局阿凡達

15 rows selected.

sql>

通過以上的設定後,在使用 之前的where條件進行查詢,返回值了。

end

修改Oracle資料庫中亂碼問題

乙個同事使用windows作業系統中文環境安裝完10g以後,因為工作需要需要使用日文的作業系統。相應的資料庫也應該是日文。這時候資料庫中預設的為中文的字符集,因為安裝資料庫的時候預設的字符集是根據系統而來的。改過作業系統的語言設定以後,oracle10g內部出現亂碼。一般情況下這種的最好該一下登錄檔...

oracle跨資料庫通訊亂碼問題

oracle不同資料庫之間可以通過dblink進行通訊,但是如果兩個資料庫是不同字符集,那麼在獲取中文字元時可能顯示的就是亂碼。假設 資料庫a字符集為simplified chinese china.zhs16gbk 下有表aa 資料庫b字符集為american america.we8iso8859...

解決oracle資料庫中文亂碼問題

中文亂碼問題解決 1.檢視伺服器端編碼 select userenv language from dual 我實際查到的結果為 american america.zhs16gbk 2.執行語句 select from v nls parameters 檢視第一行中parameter項中為nls la...