Oracle 8.0/Developer 2000 環境下,中文數據插入顯示為亂碼(如倒問號、方塊字符),或無法正常輸入中文。
客戶端 NLS_LANG 設置與服務端數據庫字符集不匹配。安裝時若選擇英文環境,註冊表預設 NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1(西歐字符集),不支援中文字符,導致字符集轉換失敗。
regedit;HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME2(或對應 HOME 目錄);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' 查詢服務端字符集。
SELECT '中文測試' FROM DUAL 驗證顯示正常;AL32UTF8 統一字符集,客戶端同步設置 NLS_LANG=.AL32UTF8;NLS_LANG 優先級高於註冊表,檢查是否被覆蓋;HOME 節點。正確設置 NLS_LANG 是 Oracle 中文環境正常運行的基石,建議納入標準化部署清單,避免專案交付階段的字符集風波。