最近學習SSM專案開發,用到oracle資料庫,
使用管理軟體PL/sql developer往資料庫表中插入資料時記錄亂碼。
結果如下:
可以看到中文資料都亂碼成了???????問號,
看了網上各位大佬的解決辦法,說是由於oracle伺服器端字元編碼 和 Oracle 客戶端字元編碼不一致引起的。
(但是我的oracle伺服器端 和 Oracle 客戶端字元編碼是一樣的,這就很納悶了,但同樣用了以下解決辦法,搞定!!!)
第一步:
登入PL/sql developer,檢查Oracle伺服器端字元編碼,用
select userenv('language') from dual;
得到以下結果:
結果:
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
第二步:
檢視Oracle 客戶端字元編碼,用
select * from V$NLS_PARAMETERS;
得到以下結果:
可以看到我的oracle伺服器端 和 Oracle 客戶端字元編碼是一樣的,沒關係繼續往下看
第三步:
在windows中創 建一個名為“NLS_LANG”的系統環境變數,
設定其值為“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,跟oracle伺服器端字元編碼一致,然後重新啟動 pl/sql developer
即可解決亂碼問題!!!
補充1:(問題解決可忽略以下內容)
跟我有同樣問題的同學完成上面的步驟後,重新登入PL/Sql developer資料還是顯示亂碼。
然後的解決辦法是:
把表刪除,注意是刪表,而不是單單刪除表中資料,
然後重新建表,重新插入資料,發現問題解決!!!
補充2:因為是用idea做開發,所以是直接用idea中database連線資料庫,然後重新建表,插入的資料,
直接用PL/Sql developer沒試過,應該也可以。