Oracle 數據庫中文亂碼的解釋和更改


date: 2019-06-25 09:29
status: draft
title: ‘Oracle 數據庫中文亂碼的解釋和更改’

涉及三個字符集的是否兼容的問題

  1. 操作系統的字符集
  2. 客戶端的字符集
  3. 數據庫的字符集(數據庫服務器端的的字符集)

操作系統的字符集設置

  1. 如果是Windows 系統的計算機,基本不用考慮操作系統的字符集,按照本人理基本都會支持Windows 系統
  2. Linux 系統,(稍後進行補充)

客戶端的字符集的設置

這個是客戶端自己設置的字符集,代表安裝Oracle 的時候的個性化設置。
對應的參數是NLS_LANG,如果客戶端未設置,此時則取的是安裝時數據庫的默認參數。

數據庫的字符集設置

安裝數據庫的時候,進行配置的字符集設置
如果沒有設置爲ZHS16GBK(這個是允許中文輸入的和UTF-8存儲方式一樣) ,聽說有的還是Al32UTF-8 (這個同樣也是UTF-8) 的一種存儲格式

解決亂碼問題:

  1. 查看數據庫的字符集
    通過SQL plus 進入system用戶
select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';

在這裏插入圖片描述

查看數據庫的字符集
如果是ZHS16GBK 或者 Al32UTF-8都可以,如果不是進行修改
將數據庫環境字符集換爲ZHS16GBK

  • 首先以sysdba的身份登錄上去 conn /as sysdba
conn system/password;
  • 關閉數據庫
shutdown immediate;
  • 以mount打來數據庫,
startup mount
  • 設置session
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
  • 啓動數據庫
alter database open;
  • 修改字符集
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
  • 關閉,重新啓動
shutdown immediate;
startup
  1. 更改客戶端字符集
    如果亂碼了就設置客戶端編碼格式
    計算機(右鍵) —>屬性—>高級系統設置—>高級—>環境變量—>新建,個人建議新建用戶變量,變量名輸入:“NLS_LANG”,變量值輸入:“SIMPLIFIEDCHINESE_CHINA.ZHS16GBK”。點擊確定即可,到此我們就設置完了。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章