国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

影響Oracle漢字顯示的字符集問題(一)

2024-08-29 13:36:29
字體:
來源:轉載
供稿:網友

  在國內外大中型數據庫治理系統中,把 Oracle 作為數據庫治理平臺的用戶比較多。 ORACLE 不論是數據庫治理能力還是安全性都是無可非議的,但是,它在漢字信息的顯示方面著實給中國用戶帶來不少麻煩,筆者多年從事 ORACLE 數據庫治理,經常收到四周用戶和外地用戶反映有關 ORACLE 數據庫漢字顯示問題的求援信,主要現象是把漢字顯示為不可識別的亂碼,造成原來大量信息無法使用。本文將就這一問題產生的原因和解決辦法進行一些探討,供存在這方面問題的用戶朋友參考。
  
  1 、原因分析
  通過對用戶反映情況的分析,發現字符集的設置不當是影響 ORACLE 數據庫漢字顯示的要害問題。那么字符集是怎么一會事呢?字符集是 ORACLE 為適應不同語言文字顯示而設定的。用于漢字顯示的字符集主要有 ZHS16CGB231280 , US7ASCII , WE8ISO8859P1 等。字符集不僅需在服務器端存在,而且客戶端也必須有字符集注冊。服務器端,字符集是在安裝 ORACLE 時指定的,字符集登記信息存儲在 ORACLE 數據庫字典的 V$NLS_PARAMETERS 表中;客戶端,字符集分兩種情況,一種情況是 sql*net 2.0 以下版本,字符集是在 windows 的系統目錄下的 oracle.ini 文件中登記的;另一種情況是 sql*net 2.0 以上(即 32 位)版本,字符集是在 windows 的系統注冊表中登記的。要在客戶端正確顯示 ORACLE 數據庫漢字信息,首先必須使服務器端的字符集與客戶端的字符集一致;其次是加載到 ORACLE 數據庫的數據字符集必須與服務器指定字符集一致。因此,把用戶存在的問題歸納分類,產生漢字顯示異常的原因大致有以下幾種:
  
  1. 1 服務器指定字符集與客戶字符集不同,而與加載數據字符集一致。
  
  這種情況是最常見的,只要把客戶端的字符集設置正確即可,解決辦法見 2.1 。
  
  1. 2 服務器指定字符集與客戶字符集相同 , 與加載數據字符集不一致。
  
  這類問題一般發生在 ORACLE 版本升級或重新安裝系統時選擇了與原來服務器端不同的字符集,而恢復加載的備份數據仍是按原字符集卸出的場合 , 以及加載從其它使用不同字符集的 ORACLE 數據庫卸出的數據的情況。這兩種情況中,不管服務器端和客戶端字符集是否一致都無法顯示漢字。解決辦法見 2.2 。
  
  1.3 服務器指定字符集與客戶字符集不同 , 與輸入數據字符集不一致。
  
  這種情況是在客戶端與服務器端字符集不一致時,從客戶端輸入了漢字信息。輸入的這些信息即便是把客戶端字符集更改正確,也無法顯示漢字。解決辦法見 2.3 。
  
  2 .解決辦法
  下面將分別對上述三種情況給出解決辦法。為了敘述方便,假設客戶端使用 WINDOWS95/98 環境,并已成功地配置了 TCP/ip 協議,安裝了 ORACLE 的 sql*net , sql*pluse 產品。
  
  2.1 設置客戶端字符集與服務器端字符集一致
  
  假設當前服務器端使用 US7ASCII 字符集。
  
 ?。?1 )查看服務器端字符集
  
  通過客戶端或服務器端的 sql*plus 登錄 ORACLE 的一個合法用戶,執行下列 SQL 語句:
  
  SQL > select * from V$NLS_PARAMETERS
  
  parameter value
  
  NLS_LANGUAGE AMERICAN
  
  NLS_TERRITORY AMERICA
  
  … . ….
  
  NLS_CHARACTERSET US7ASCII
  
  NLS_SORT BINARY
  
  NLS_NCHAR_CHARACTERSET US7ASCII
  
  從上述列表信息中可看出服務器端 ORACLE 數據庫的字符集為 'US7ASCII' 。
  
  ( 2 )按照服務器端字符集對客戶端進行配置
  
  配置方法有兩種:
  
  安裝 ORACLE 的客戶端軟件時指定
  
  在安裝 ORACLE 的客戶端產品軟件時,選擇與 ORACLE 服務端一致的字符集(本例為 US7ASCII )即可。
  
  修改注冊信息的方法
  
  根據 ORACLE 客戶端所選 sql*net 的版本分為下列兩種情況:
  
  a. 客戶端為 sql*net 2.0 以下版本
  
  進入 Windows 的系統目錄,編輯 oracle.ini 文件,用 US7ASCII 替換原字符集,重新啟動計算機,設置生效。

  
  b. 客戶端為 sql*net 2.0 以上版本
  
  在 WIN98 下 運 行 REGEDIT, 第一步選 HKEY_LOCAL_MACHINE, 第二步選擇 SOFTWARE , 第三步選擇 ORACLE , 第四步選擇 NLS_LANG , 鍵 入 與服 務 器 端 相 同 的 字 符 集(本例為: AMERICAN_AMERICAN.US7ASCII )。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敦化市| 梁平县| 中西区| 虞城县| 武宁县| 文安县| 长治县| 德保县| 新宾| 宁海县| 白沙| 新建县| 马龙县| 临洮县| 东辽县| 翁源县| 潜江市| 广平县| 图片| 区。| 定兴县| 文登市| 西乌珠穆沁旗| 全椒县| 乌鲁木齐县| 教育| 阿拉善盟| 工布江达县| 京山县| 弥渡县| 门头沟区| 泰州市| 林口县| 宁海县| 南涧| 内江市| 丰镇市| 南郑县| 白银市| 宁明县| 班戈县|