oracle字符集問題

simplewp發表於2012-08-30
一切的字元亂碼問題都是由於字符集選擇不當或客戶端與服務端的字符集選擇不一致導致的。我將解決Oracle漢字亂碼的問題解決過程總結如下。

1)選擇合適的字符集,在建立資料庫時,必須認真地考慮。如果以後更改,會可能丟失資料。如果公司業務僅涉及中文,可以選擇
ZHS16GBKzhs16cgb231280。若涉及多國語言可選擇AL32UTF8。一個漢字所佔的位元組數,也取決於所用編碼的字符集。

2)更改資料庫端的字符集
select * from nls_database_parameters;
select userenv(‘language’) from dual;
1.       關閉資料庫

SQL>SHUTDOWN IMMEDIATE
2. 啟動到Mount

SQL>STARTUP MOUNT;

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 ZHS16GBK;

SQL>ALTER DATABASE NATIONAL CHARACTER SET AL16UTF16;

--如果是從子集到父集,需要使用INTERNAL_USE 引數,跳過超子集檢測

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;

3)修改客戶端字符集,如應用程式,sqlplus等
設定環境變數NLS_LANG,與資料庫端一致。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27009266/viewspace-742304/,如需轉載,請註明出處,否則將追究法律責任。

相關文章