使用 SQL*Plus 連線 Oracle 時出現「????」亂碼,主因是伺服器端與客戶端字元集設定不一致。例如日文環境下,伺服器為 JA16SJIS,客戶端未設定即會產生亂碼。
將客戶端環境變數 NLS_LANG 設為與伺服器一致的語言、地區與字元集組合。
setenv NLS_LANG American_Japan.JA16SJIS
export NLS_LANG=American_Japan.JA16SJIS
中文字元集代碼請參考東亞語言列表(如 ZHT16BIG5、ZHS16GBK 等)。
若仍有問題,需額外設定 NLS 資料路徑:
# csh
setenv ORA_NLS10 $ORACLE_HOME/nls/data
# bash
export ORA_NLS10=$ORACLE_HOME/nls/data
# csh
setenv ORA_NLS33 $ORACLE_HOME/ocommon/nls/data
# bash
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/data
設定完成後重新啟動客戶端工具即可正常顯示中文、日文等多語系資料。