不管錯誤信息中你的數據庫字符集是什么,都是由於數據庫服務端和你的客戶端字符集不統一造成的。影響Oracle數據庫字符集最重要的參數是NLS_LANG參數。它的格式如下: NLS_LANG = language_territory.charset。它有三個組成部分(語言、地域和字符集),每個成分控制了NLS子集的特性。其中:
Language: 指定服務器消息的語言, 影響提示信息是中文還是英文
Territory: 指定服務器的日期和數字格式,
Charset: 指定字符集。
一、查詢客戶端字符集
SELECT * FROM V$NLS_PARAMETERS;
二、查看服務器端字符集
SELECT * FROM NLS_DATABASE_PARAMETERS;
由於已經修改過了字符集,上圖中字符集都是utf8.
三、修改客戶端字符集與服務器端一致的步驟(圖文)
1.登入
C:\Windows\system32>sqlplus
請輸入用戶名:sys
輸入口令:as sysdba
SQL> shutdown immediate; // (把database停了)
SQL> startup mount; //(把database重開)
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter system set aq_tm_processes=0;
SQL> alter database open;
SQL> alter database character set utf8;
SQL> alter database character set internal_use utf8;
SQL> shutdown immediate;
SQL> startup; //(重開正常oracle)
驗證的話,看文章一二兩步驟即可。