問題背景:
orclae服務的原本就是有也使用正常,win下的pl/sql developer客戶端能正常訪問且,中文字段也顯示正常。unix的aix服務器訪問oracle用occi和sqlplus也能正常顯示中文字段。
后來由於需求需要新增了一台新的linux機子,他的數據庫還是使用現有oracle數據庫(上面說到的那個數據庫)。
問題現象:
linux下的用OCCI查詢數據庫中文字段getString()中文字段返回???亂碼,后來用sqlplus連接orcle用查詢語句查詢sqlplus查詢oracle中文字段也是返回???亂碼.
問題分析:
網上查閱資料初步認定是環境字符集編碼問題。然后找了下查詢oracle客戶端字符集編碼語句,select * from nls_instance_parameters和select userenv('language') from dual; ,發現linux下的sqlplus和unix下sqlplus及win下pl/sql查詢的結果一樣。這下郁悶了。后來無心再原本的unix環境里查看了下LANG相關的環境變量發現比linux下多了個NLS_LANG,上網搜索了下得知:NLS_LANG環境變量是oralce客戶端字符集配置,ok解決了。
解決
在linux下新增一個環境變量NLS_LANG="american_america.zhs16gbk" ;