到網路上搜一下,關於oracle亂碼的討論很多,但卻沒找著對症的藥方。
先把情況說明一下,讀者可以按照說明重現問題:
在oracle9i中,有乙個表test1,有兩個欄位id、name,裡面輸入一行資料:
id name
你好 你好嗎?
建立乙個檢視
create or replace view view_test as
select '成功' colname, t.* from test1 t
使用sqlplus、pl/sql等讀取檢視資料都正常為
colname id name
成功 你好 你好嗎?
但用jdbc讀時,顯示為:
colname id name
??? 你好 你好嗎?
進一步的測試還發現,只有當漢字作為檢視中新建欄位的資料值時,才會在jdbc讀取時出現亂碼。而原有欄位中的漢字或將漢字作為欄位名都正常。
我查了一下oracle的一些文件,很多解決亂碼的方法是更改字符集和國家字符集。但這對正在執行的資料庫來說,風險比較大,還不一定就能解決此問題。
我的解決方法是在檢視中將中文值通過to_nchar函式進行轉換一下,再查詢時便正常了。
create or replace view view_test as
select to_nchar('成功') colname, t.* from test1 t
解決Oracle處理中文亂碼的一種方法
專案中用到oracle,伺服器端使用american america.we8iso8859p1字元編碼,我沒有修改伺服器端的許可權,只能修改客戶端.但是客戶端無論我換什麼字元編碼均得到亂碼,最後我將客戶端的字元編碼也設為american america.we8iso8859p1,然後從程式中下手.a...
oracle中文亂碼的解決方法
解決辦法 修改oracle使用者的環境變數 檔案。加yvxnvakuuk入nls lang simplified chinese china.al32utf8 export nls lang 複製 如下 oracle rhel6r4 vi bash profile bash profile get ...
oracle字元亂碼的解決方法
原因分析 客戶端字符集就是為了讓資料庫知道我們傳遞過去的字元是屬於哪種字符集,以便於oracle在儲存字元時進行相應的編碼對映 檢視客戶端字符集通過查詢登錄檔中的nls lang鍵 在客戶端查詢資料庫時顯示字元的時候我們使用的是os系統環境的預設字符集 查詢os系統環境預設字符集通過命令 chcp ...