當前位置:首頁 » 存儲配置 » oracle存儲過程中文亂碼

oracle存儲過程中文亂碼

發布時間: 2023-01-05 17:23:10

『壹』 PLsql 表備注,存儲過程里的中文都顯示亂碼,請問怎麼處理

方法/步驟
登陸plsql,執行sql語句,輸出的中文標題顯示成問號????;條件包含中文,則無數據輸出
輸入sql語句select
*
from
V$NLS_PARAMETERS查看字元集,查看第一行value值是否為簡體中文
進入注冊表,依次單擊HKEY_LOCAL_MACHINE
--->SOFTWARE
--->
ORACLE--->home(小編安裝的是Oracle
11g,這里顯示成KEY_OraDb11g_home1),找到NLS_LANG,查看數值數據是否為:SIMPLIFIED
CHINESE_CHINA.ZHS16GBK
如果以上設置都沒有問題,那就要查看下環境變數的設置,查看是否有變數NLS_LANG,沒有則新建該變數
新建變數,設置變數名:NLS_LANG,變數值:SIMPLIFIED
CHINESE_CHINA.ZHS16GBK,確定即可
6
退出plsql,重新登陸plsql。輸入sql語句,執行,中文標題終於正常顯示,也有數據輸出了

『貳』 oracle 亂碼 如何解決

1、對於Oracle Enterprise Manager中的所有工具,有一個配置文件名為dbappscfg.properties,修改該文件即可解決上述問題。這個文件的位置在$ORACLE_HOME\sysman\config目錄下,用任何的文本編輯器打開該文件,在這個文件裡面,找到這樣一項,
# SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
2、去掉注釋符#,同時將其修改為
SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
3、對於Windows操作系統,還需要修改一項,在文件中找到# SQLPLUS_SYSTEMROOT=c:\\WINNT40,去掉注釋符,將其修改為你所在機器的操作系統主目錄。如操作系統的主目錄在D盤的Winnt下,則將其修改為
SQLPLUS_SYSTEMROOT=d:\\WINNT。
對於後面一項的修改只對Windows操作系統進行,對UNIX操作系統則不需要。如果在Windows操作系統中不修改該項,在Oracle Enterprise Manager中,連接系統時,會提示如下的錯誤:
ORA-12560 TNS:protocol adapter error
或者
ORA-12545 Connect failed because target host or object does not exist
4、修改完成後,保存文件,退出編輯。重新連接SQL PLUS Worksheet,字元集亂碼問題得到解決,顯示正確的簡體中文字元集。
問題: 使用Oracle Instant Client 出現 ORA-12705: Cannot access NLS data files or invalid environment specified 錯誤。
如果是Windows平台,注冊表裡 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 查找鍵 NLS_LANG,這個鍵由Oracle標准客戶端安裝創建, 值是 NA 。這個導致了 ORA-12705錯誤。解決方法就是改名 NLS_LANG。
Linux下 如果環境變數 NLS_LANG 值是NA 會引起 ORA-12705 錯誤,解決方法是刪除這個變數
unset NLS_LANG

『叄』 oracle 用Sqlplus連接的時候中文出現亂碼

1、按win+R鍵調出windows運行窗口,並在窗口中輸入「cmd」以便進入命令行程序。

『肆』 Oracle數據出現中文亂碼怎麼解決

1. 伺服器指定字元集與客戶字元集不同,而與載入數據字元集一致。
解決方法:對於這種情況,只需要設置客戶端字元集與伺服器端字元集一致就可以了,具體操作如下:
* 查看當前字元集:
SQL> select * from sys.props$
2 WHERE NAME=『NLS_CHARACTERSET』;

NAME value$
NLS_CHARACTERSET ZHS16GBK

可以看出,現在伺服器端Oracle資料庫的字元集為『ZHS16GBK』
* 根據伺服器的字元集在客戶端作相應的配置或者安裝Oracle的客戶端軟體時指定:
如果還沒安裝客戶端,那麼在安裝客戶端時,指定與伺服器相吻合的字元集即可;如果已經安裝好了客戶端,並且客戶端為 sql*net 2.0 以下版本,進入Windows的系統目錄,編輯oracle.ini文件,用US7ASCII替換原字元集,重新啟動計算機,設置生效;否則,如果,客戶端為 sql*net 2.0 以上版本,在Win98 下 運 行REGEDIT,第一步選HKEY_LOCAL_MACHINE,第二步選擇SOFTWARE, 第三步選擇 Oracle, 第四步選擇 NLS_LANG, 鍵 入 與服 務 器 端 相 同 的 字 符 集
(本例為:HKEY_LOCAL_MACHINE/

SOFTWARE/ORACLE/NLS_LANG :AMERICAN _ AMERICA. ZHS16GBK)。
如果是UNIX客戶端,則:
SQL> conn / as sysdba
Connected.
SQL> SQL> UPDATE sys.PROPS$ SET value$=『SIMPLIFIED CHINESE』
2 WHERE NAME=『NLS_LANGUAGE』;

2. 伺服器指定字元集與客戶字元集相同,與載入數據字元集不一致。
解決方法:強制載入數據字元集與伺服器端字元集一致。要做到這一點,可以通過重新創建資料庫,並選擇與原卸出數據一致的字元集,然後IMP數據,這種情況僅僅適用於空庫和具有同一種字元集的數據。
解決這類問題,也可以先將數據載入到具有相同字元集的伺服器上,然後用轉換工具卸出為foxbase 格式或access格式資料庫,再用轉換工具轉入到不同字元集的Oracle資料庫中,這樣就避免了Oracle字元集的困擾。目前資料庫格式轉換的工具很多,像power builder5.0以上版本提供的pipeline及Microsoft Access資料庫提供的數據導入/導出功能等。

3. 伺服器指定字元集與客戶字元集不同,與輸入數據字元集不一致。
對於這種情況,目前為止都還沒有太好的解決方法。
通過上面的了解,我們知道,導致在後期使用資料庫時出現種種關於字元集的問題,多半是由於在資料庫設計、安裝之初沒有很好地考慮到以後的需要,所以,我們完全可以通過在伺服器上和客戶端使用相同的字元集來避免由此類問題引出的麻煩
怎樣修改查看Oracle字元集
a.資料庫伺服器字元集select * from nls_database_parameters,其來源於props$,是表示資料庫的字元集。

b.客戶端字元集環境select * from nls_instance_parameters,其來源於v$parameter,

表示客戶端的字元集的設置,可能是參數文件,環境變數或者是注冊表

c.會話字元集環境 select * from nls_session_parameters,其來源於v$nls_parameters,表示會話自己的設置,可能是會話的環境變數或者是alter session完成,如果會話沒有特殊的設置,將與nls_instance_parameters一致。

客戶端的字元集要求與伺服器一致,才能正確顯示資料庫的非Ascii字元。如果多個設置存在的時候,alter session>環境變數>注冊表>參數文件
實際情況
我用select * from nls_database_parameters
PARAMETER VALUE
------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM

PARAMETER VALUE
------------------------------ ------------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0
說明我在創建資料庫時指定的字元集是ZHS16GBK,我用
update sys.props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';
修改了字元集,但插入中文時仍然有問題,這或許就如上面資料所說的通過修改SYS.PROPS$來修改主要是對應客戶端的顯示,與存儲無關,
所以仍舊是亂碼。
然後我重新創建了個資料庫,指定字元集為AL32UTF8,插入中文就沒問題了。
可見我們如果要在資料庫中顯示中文,在創建資料庫時一定喲指定好所用的字元集。

熱點內容
sqlserver2008存儲文件 發布:2025-07-28 03:49:23 瀏覽:623
pythonurllibhttps 發布:2025-07-28 03:48:36 瀏覽:236
plc的編程器 發布:2025-07-28 03:44:25 瀏覽:665
c語言文件沒編譯器怎麼打開 發布:2025-07-28 03:41:38 瀏覽:151
我的世界伺服器防止卡頓指令 發布:2025-07-28 03:37:21 瀏覽:233
手機存儲過大 發布:2025-07-28 03:37:14 瀏覽:777
js與java的交互 發布:2025-07-28 03:37:10 瀏覽:688
ios能反編譯嗎 發布:2025-07-28 03:36:36 瀏覽:407
特教師解壓碼 發布:2025-07-28 03:28:42 瀏覽:918
weblogic怎麼刪除緩存 發布:2025-07-28 03:28:42 瀏覽:665