安裝oracle 10g 數據庫後, 在pl/sql 或再sql/plus 中輸入中文字符,出現 ?

  1. 現象:  sql

SQL> insert into emp(emp.empno,emp.ename,emp.job,emp.mgr,emp.hiredate,emp.sal,emp.comm,emp.deptno) values (3,'你好','靠你妹',2,to_date('1888/01/01','yyyy/mm/dd'),288.9,22.0,20); 數據庫

 

1 row inserted 服務器

獲得的結果: oracle

3 ????       ??????        2 1888/1/1       288.90     22.00     20 spa

 

  1. 緣由: 由於在 oracle 數據庫的服務器端與我如今使用的客戶端(pl/sql,sqlplus) 的字符集不相同 orm

  2. 解決: it

scott 用戶登陸 oracle 的服務器端。 輸入: 登錄

SQL> select userenv('language') from dual; 變量

 

USERENV('LANGUAGE') 亂碼

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

AMERICAN_AMERICA.ZHS16GBK

獲得如今 服務器端使用的字符集

 

 

配置 win8的環境變量, 再環境變量中增長。 NLS_LANG = AMERICAN_AMERICA.ZHS16GBK或者 NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

重啓 sqlplus . 再進行驗證便可

 

  1. 結果

SQL> insert into emp(emp.empno,emp.ename,emp.job,emp.mgr,emp.hiredate,emp.sal,emp.comm,emp.deptno) values (4,'你好','靠你妹',2,to_date('1888/01/01','yyyy/mm/dd'),288.9,22.0,20);

 

1 row inserted

 

SQL> commit ;

 

Commit complete

 

SQL> select * from emp where emp.empno = 4 ;

 

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO

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

    4 你好       靠你妹        2 1888/1/1       288.90     22.00     20

 

SQL>

自此中文亂碼問題解決。

  1. 另外網上有人提出,修改註冊表中的值便可,那麼在註冊表中設置的環境變量,與再環境變量中設置的變量有什麼區別和聯繫呢?  

即:再啓動框中輸入  regedit . 彈出註冊表。 找到 oracle   NLS_LANG 的值, 修改爲相對應的值便可。

 

  1. 還有一個 sql語句是這樣的:  V$NLS_PARAMETERS 表明了什麼? sql語句與select userenv('language') from dual; 有什麼區別?

 

SQL> select * from V$NLS_PARAMETERS ;

相關文章
相關標籤/搜索