plsql和其他客戶端(putty和ssh&nb…

一、
個人實踐:加了一個環境變量NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK  成功了
方法:
設置好環境變量後,在 PLSQL Developer 的目錄中創建start.bat文件。
以下是start.bat的內容:
@echo off 
set path=D:\oracle\product\instantclient_10_2
set ORACLE_HOME=D:\oracle\product\instantclient_10_2
set TNS_ADMIN=D:\oracle\product\instantclient_10_2
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
start plsqldev.exe
啓動plsql時直接點擊這個腳本
TNS_ADMIN=D:\oracle\product\instantclient_10_2 這環境變量如果沒有的話,在我的電腦,屬性,高級,環境變量,中添加(我用的是oracle精簡版客戶端)
如果是非精簡版的建議修改註冊表:運行-》regedit->HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraClient10g_home1/NSL_LANG,倒數第二個參數可能不一樣,改成
SIMPLIFIED CHINESE_CHINA.ZHS16GBK

這個可能是oracle客戶端和服務器端的編碼方式不一樣。
SQL> select * from v$nls_parameters t where t.PARAMETER ='NLS_LANGUAGE' or t.PARAMETER ='NLS_CHARACTERSET';

PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_LANGUAGE
SIMPLIFIED CHINESE

NLS_CHARACTERSET
ZHS16GBK


--數據庫服務器字符集
SQL> select * from nls_database_parameters;

PARAMETER
------------------------------
VALUE
--------------------------------------------------------------------------------
NLS_LANGUAGE
AMERICAN

--客戶端字符集
--表示客戶端的字符集的設置,可能是參數文件,環境變量或者是註冊表
SQL> select * from nls_instance_parameters;

PARAMETER
------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
NLS_LANGUAGE
AMERICAN

--會話字符集的設置,這個沒有特殊設置的話,和nls_instance_parameters一致;
SQL> select * from nls_session_parameters;

PARAMETER
------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
NLS_LANGUAGE
SIMPLIFIED CHINESE

二、
如果數據庫服務器端的編碼和客戶端字符集編碼不一樣,則會導致亂碼,因此需要更改客戶端的編碼方式。
更改客戶端的編碼方式有兩種方式,第一種是更改註冊表,這個比較危險,就不在這裏提及。第二種是設置環境變量。
設置環境變量,新建一個環境變量:NLS_LANG,值是:AMERICAN.ZHS16GBK。
值的構成方式是數據庫中查詢的服務器端的“NLS_LANGUAGE的值”+“.”+“NLS_CHARACTERSET的值”

如果是其他的客戶端,如putty和ssh client,xmanager等的話也是要設置環境變量
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
這個環境變量只會改變nsl_session_parameters的值,不會改變nls_data_parameters和nls_instance_parameters的參數值

eg:
SQL> select name from menu;

NAME
--------------------
意義
北京

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章