PLSQL Developer 中文亂碼踩坑記

環境

操作系統版本: Windows 7
PL/SQL 版本: 12.0.1.1814

原因

由於 Oracle 服務器端和客戶端字符集編碼不一致引起的。

注意點

寫在最前面,減少踩坑!!!

網上教程大多未強調這些注意點,像我這樣的 Oracle 小白就完美踩坑而過。

  • 設置完環境變量NLS_LANG後,我個人重啓 PL/SQl多次不生效,重啓操作系統才生效。
  • 設置客戶端和服務器端的字符集後,需要再次UPDATE後,此時SELECT纔不是亂碼。
  • 執行完 SQL語句,記得 commit,否則其他會話無法獲取最新數據。

解決方法

服務端

檢查 Oracle 服務器端字符編碼是否一致。

-- 檢查字符集是否一致 
select userenv('language') from dual;
-- AMERICAN_AMERICA.AL32UTF8

select * from v$nls_parameters a where a.PARAMETER = 'NLS_CHARACTERSET'; 
-- AL32UTF8

客戶端

設置客戶端字符集

在系統環境變量中,新增變量 NLS_LANG,設置字符集爲:AMERICAN_AMERICA.AL32UTF8(服務器端的字符集)。

我個人重啓 PL/SQL 不生效,重啓系統才生效。

驗證是否生效

打開 PL/SQL工具的:幫助–支持信息–信息 選項卡里進行檢查,在“Character Sets”下面,有一項是:“NLS_LANG”, 檢查是否與環境變量設置的NLS_LANG一致,一致即生效。

設置字體字符集

打開 PL/SQL工具的:配置–首選項–用戶界面–字體–主字體,設置字體字符集爲“西歐語言”,默認爲“中文 GB2312”。

微信公衆號:daodaotest

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章