Oracle亂碼的問題


1.sql腳本直接能執行但是以sql文件不能執行

sql正常,由txt轉換為sql文件后,數據庫執行報錯,解決辦法是將sql文件中數據取出放到新文件中,新文件保存時直接以sql格式保存。

2.亂碼問題

1.如果導入到plsql中顯示亂碼,首先查看sql的存儲格式,修改成utf-8

2.查看服務器端編碼—

select userenv('language') from dual;

我實際查到的結果為: SIMPLIFIED CHINESE_CHINA.ZHS16GBK

(AMERICAN_AMERICA.AL32UTF8)這個也是常用的  AMERICAN_AMERICA.ZHS16GBK

 

 

如果不正確的話設置方法:----在oracle的數據上去執行的

[oracle@ORACLE ~]$ sqlplus /nolog

conn /as sysdba;

select userenv('language') from dual;

SHUTDOWN IMMEDIATE

STARTUP MOUNT

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;

SHUTDOWN IMMEDIATE;

STARTUP;

查看一下是否修改過來

select userenv('language') from dual;

3.客戶端

執行語句 select * from V$NLS_PARAMETERS  

查看第一行中PARAMETER項中為NLS_LANGUAGE 對應的VALUE項中是否和第一步得到的值一樣。

 

或者途中的NLS_LANGUAGE和NLS_CHARACTERSET中的value的值加到一起和服務器中額編碼是否一致。

如果不是,需要設置環境變量.或者修改注冊表 regedit

NLS_LANG

否則PLSQL客戶端使用的編碼和服務器端編碼不一致,插入中文時就會出現亂碼.

 

2.Unix/Linux環境,查看和修改NLS_LANG變量的方法
1)查看方法,在oracle用戶下使用env命令獲得系統的環境變量列表,然后使用grep命令定位到“NLS_LANG”內容
$ env | grep NLS_LANG
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

2)修改方法:使用export命令設置該環境變量
$ NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
$ export NLS_LANG

很全的知識

https://www.2cto.com/database/201111/111388.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM