Oracle數(shù)據(jù)庫(kù)中文顯示???????解決辦法
項(xiàng)目場(chǎng)景:
Oracleoracle中文顯示???解決辦法
問(wèn)題描述
原因分析:
Oracle中文顯示???通常是由于字符集不匹配或者編碼問(wèn)題導(dǎo)致的。當(dāng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)使用的是某種字符集,而客戶(hù)端或者應(yīng)用程序使用的是另一種字符集時(shí),就會(huì)出現(xiàn)中文顯示亂碼的情況。
另外,如果數(shù)據(jù)庫(kù)中的數(shù)據(jù)本身就是損壞的或者不完整的,也有可能導(dǎo)致中文顯示亂碼的問(wèn)題。
總的來(lái)說(shuō),中文顯示亂碼的原因主要包括字符集不匹配、編碼問(wèn)題、數(shù)據(jù)損壞等。
解決方案:
1、不同解決思路
修改NLS_LANG環(huán)境變量:將NLS_LANG環(huán)境變量設(shè)置為正確的字符集,例如:NLS_LANG=AMERICAN_AMERICA.ZHS16GBK。
修改Oracle客戶(hù)端的字符集:在Oracle客戶(hù)端中,可以通過(guò)修改NLS_LANG參數(shù)來(lái)設(shè)置字符集,例如:ALTER SESSION SET NLS_LANG=AMERICAN_AMERICA.ZHS16GBK。
修改數(shù)據(jù)庫(kù)的字符集:如果數(shù)據(jù)庫(kù)的字符集不是UTF-8或者GBK,可以考慮修改數(shù)據(jù)庫(kù)的字符集。
使用Unicode字符集:Unicode字符集支持多種語(yǔ)言,包括中文,可以解決中文亂碼問(wèn)題。
使用Java程序連接Oracle:如果使用Java程序連接Oracle,可以在連接Oracle時(shí)指定字符集,例如:jdbc:oracle:thin:@localhost:1521:orcl?useUnicode=true&characterEncoding=UTF-8。
使用PL/SQL Developer等工具:一些Oracle數(shù)據(jù)庫(kù)管理工具支持中文顯示,例如PL/SQL Developer,可以在工具的設(shè)置中修改字符集。
2、具體解決過(guò)程
查看數(shù)據(jù)庫(kù)字符集
select userenv('language') from dual;
SQL> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.ZHS16GBK SQL>
查詢(xún)系統(tǒng)字符集
locale
[oracle@localhost ~]$ locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= [oracle@localhost ~]$
將數(shù)據(jù)庫(kù)字符集修改為與系統(tǒng)字符集一致(也可修改系統(tǒng)字符集與數(shù)據(jù)庫(kù)字符集一致)
SQL> shutdown immediate SQL> startup nomount SQL> alter database mount exclusive; //裝載數(shù)據(jù)為專(zhuān)用的高級(jí)模式; SQL> alter system enable restricted session; //啟用受限制的session模式 SQL> alter system set job_queue_processes=0; //'maximum number of job queue slave processes' 設(shè)置工作隊(duì)列的最大進(jìn)程數(shù)為0 SQL> alter system set aq_tm_processes=0; SQL> alter database open; SQL> alter database character set internal_use utf8;; // 設(shè)置為自己所需字符集即可 SQL> shutdown immediate SQL> startup
注意:已經(jīng)存在的數(shù)據(jù),在修改了字符集之后還是會(huì)顯示為亂碼,只有新插入的數(shù)值才會(huì)生效
總結(jié)
到此這篇關(guān)于Oracle數(shù)據(jù)庫(kù)中文顯示???????解決辦法的文章就介紹到這了,更多相關(guān)解決Oracle中文顯示???????內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
常見(jiàn)數(shù)據(jù)庫(kù)系統(tǒng)比較 Oracle數(shù)據(jù)庫(kù)
常見(jiàn)數(shù)據(jù)庫(kù)系統(tǒng)比較 Oracle數(shù)據(jù)庫(kù)...2007-03-03oracle in長(zhǎng)度限制的兩個(gè)快速解決方法
這篇文章主要給大家介紹了關(guān)于oracle in長(zhǎng)度限制的兩個(gè)快速解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01有關(guān)Oracle數(shù)據(jù)庫(kù)的備份情況
有關(guān)Oracle數(shù)據(jù)庫(kù)的備份情況...2007-03-03Oracle Listener 動(dòng)態(tài)注冊(cè) 與 靜態(tài)注冊(cè)
注冊(cè)就是將數(shù)據(jù)庫(kù)作為一個(gè)服務(wù)注冊(cè)到監(jiān)聽(tīng)程序。客戶(hù)端不需要知道數(shù)據(jù)庫(kù)名和實(shí)例名,只需要知道該數(shù)據(jù)庫(kù)對(duì)外提供的服務(wù)名就可以申請(qǐng)連接到數(shù)據(jù)庫(kù)2015-12-12oracle截取字符(substr)檢索字符位置(instr)示例介紹
本節(jié)主要介紹了oracle截取字符(substr)檢索字符位置(instr)的使用,需要的朋友可以參考下2014-07-07Oracle啟用“_optimizer_skip_scan_enabled” 參數(shù)導(dǎo)致NC系統(tǒng)卡死問(wèn)題解決方法
這篇文章主要介紹了Oracle啟用“_optimizer_skip_scan_enabled” 參數(shù)導(dǎo)致NC系統(tǒng)卡死問(wèn)題解決方法,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08Oracle遞歸樹(shù)形結(jié)構(gòu)查詢(xún)功能
oracle樹(shù)狀結(jié)構(gòu)查詢(xún)即層次遞歸查詢(xún),是sql語(yǔ)句經(jīng)常用到的,在實(shí)際開(kāi)發(fā)中組織結(jié)構(gòu)實(shí)現(xiàn)及其層次化實(shí)現(xiàn)功能也是經(jīng)常遇到的。這篇文章給大家介紹了Oracle遞歸樹(shù)形結(jié)構(gòu)查詢(xún)功能,需要的朋友參考下2019-09-09Oracle中查看引起Session阻塞的2個(gè)腳本分享
這篇文章主要介紹了Oracle中查看引起Session阻塞的2個(gè)腳本分享,本文給出了2個(gè)腳本來(lái)查詢(xún)導(dǎo)致Session阻塞的原因,并給出Kill引起阻塞的Session方法,需要的朋友可以參考下2014-10-10