首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

解決 Oracle 8.0/2000 中文顯示與輸入亂碼問題

     編輯:Oracle 資料庫基礎

問題現象

Oracle 8.0/Developer 2000 環境下,中文數據插入顯示為亂碼(如倒問號、方塊字符),或無法正常輸入中文。

根因分析

客戶端 NLS_LANG 設置與服務端數據庫字符集不匹配。安裝時若選擇英文環境,註冊表預設 NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1(西歐字符集),不支援中文字符,導致字符集轉換失敗。

解決方案:註冊表修改 NLS_LANG

  1. 運行 regedit;
  2. 定位 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME2(或對應 HOME 目錄);
  3. 修改 NLS_LANG 值為以下任一支援中文的設置:
  • 簡體中文:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 或 AMERICAN_AMERICA.ZHS16GBK;
  • 繁體中文:TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5 或 AMERICAN_AMERICA.ZHT16BIG5。

關鍵原則

客戶端 NLS_LANG 的字符集部分(點號後)必須與服務端數據庫字符集一致或相容。可通過 SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET' 查詢服務端字符集。

驗證步驟

  1. 修改註冊表後重啟開發工具(SQL*Plus、Forms Builder、Reports Builder);
  2. 執行 SELECT '中文測試' FROM DUAL 驗證顯示正常;
  3. 嘗試插入/更新中文數據驗證輸入正常。

進階避坑指南

  • 9i 及以上版本推薦使用 AL32UTF8 統一字符集,客戶端同步設置 NLS_LANG=.AL32UTF8;
  • Windows 環境變量 NLS_LANG 優先級高於註冊表,檢查是否被覆蓋;
  • JDBC/ODBC/OLE DB 驅動有獨立字符集設置機制,需分別配置;
  • 多 HOME 環境確保修改正確的 HOME 節點。

正確設置 NLS_LANG 是 Oracle 中文環境正常運行的基石,建議納入標準化部署清單,避免專案交付階段的字符集風波。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved