Oracle服務(wù)器數(shù)據(jù)庫(kù)中文亂碼之字符集修改 |
發(fā)布時(shí)間: 2012/8/24 17:13:37 |
最近安裝個(gè)Oracle 10g數(shù)據(jù)庫(kù),dbca建庫(kù)的時(shí)候沒(méi)選字符集或者選錯(cuò)的情況,導(dǎo)入數(shù)據(jù)后,中文全部是亂碼(搞笑的是,中文亂碼 居然全部是個(gè)“靠”字),查看網(wǎng)絡(luò)幾篇文章,也做了相應(yīng)修改(以前按方法修改可以解決的,今天特例。鉀Q辦法如下: SQL> select name,value$ from props$ where name like '%NLS%';---語(yǔ)句查詢當(dāng)前數(shù)據(jù)庫(kù)服務(wù)器字符集 NAME NLS_TERRITORY NLS_CURRENCY
NLS_NUMERIC_CHARACTERS NLS_CHARACTERSET ----找到查出來(lái)的結(jié)果中的該項(xiàng)參數(shù)
下面是修改過(guò)程: SQL> shutdown immediate; ---停止數(shù)據(jù)庫(kù) SQL> startup mount ---啟動(dòng)數(shù)據(jù)庫(kù)到mount狀態(tài) Total System Global Area 235999352 bytes ---下面是修改過(guò)程,按步驟修改 Session altered. SQL> alter system enable restricted session; System altered. SQL> alter system set job_queue_processes=0; System altered. SQL> alter system set aq_tm_processes=0; System altered. SQL> alter database open; Database altered. SQL> set linesize 120; SQL> ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳過(guò)超集的檢查, (ALTER DATABASE character set INTERNAL_USE ) Database altered. ---啟動(dòng)數(shù)據(jù)庫(kù) Total System Global Area 235999352 bytes
----再次查看當(dāng)前字符集 SQL> select name,value$ from props$ where name like '%NLS%'; NAME NLS_TERRITORY NLS_CURRENCY
NLS_NUMERIC_CHARACTERS NLS_CHARACTERSET 今天的情況特殊,修改完了,中文亂碼還是“靠”字,- - 后來(lái)試著修改系統(tǒng)字符集 在Oracle下 .bash_profile 文件里面加入 export NLS_LANG="Simplified Chinese_CHINA.ZHS16GBK" 最后把NLS_LANG中后面的字符集ZHS16GBK修改成AL32UTF8,查看結(jié)果,搞掂完成,回家! 總結(jié):要系統(tǒng)字符集和數(shù)據(jù)庫(kù)字符集相對(duì)應(yīng)才會(huì)解決中文亂碼問(wèn)題,dbca建庫(kù)時(shí),也要注意字符集選擇問(wèn)題。
本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |