共計 1036 個字符,預計需要花費 3 分鐘才能閱讀完成。
本篇內容主要講解“Oracle 字符集的基本原理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“Oracle 字符集的基本原理”吧!
一、三個概念:
1. Oracle 數據庫服務器字符集:
select * from v$nls_parameters where parameter= NLS_CHARACTERSET
2. 客戶端操作系統字符集:
/etc/sysconfig/i18n 設置
LANG= zh_CN.GB2312 (指定當前操作系統的字符集)
SUPPORTED= zh_CN.GB2312 (指定當前操作系統支持的字符集)
SYSFONT= lat0-sun16 (指定當前操作系統的字體)
3. 客戶端 NLS_LANG 參數:該參數用于向 Oracle 指示客戶端操作系統的字符集。
二、Oracle 字符集轉換的基本原則:
設置客戶端的 NLS_LANG 為客戶端操作系統的字符集
如果數據庫字符集等于 NLS_LANG,數據庫和客戶端傳輸字符時不作任何轉換
如果它們倆不等,則需要在不同字符集間轉換,只有客戶端操作系統字符集是數據庫字符集子集的基礎上才能正確轉換,否則會出現亂碼。
三、最佳實踐
插入過程:
”中國“兩字在客戶端操作系統字符集 ZHS16GBK 中的編碼是”d6,d0,b9,fa,由于 NLS_LANG 和數據庫字符集不同,Oracle 會進行字符編碼轉換,也就是將字符集 ZHS16GBK 里“中國”的編碼“d6,d0,b9,fa 轉換為字符集 AL32UTF8 里”中國“的編碼”e4,b8,ad,e5,9b,bd“。
讀取過程:
數據庫端讀取的編碼是”e4,b8,ad,e5,9b,bd“,由于 NLS_LANG 和數據庫字符集不同,客戶端對數據庫端傳過來的字符編碼進行轉換,數據庫端字符集 AL32UTF8 里”中國“兩字的編碼”e4,b8,ad,e5,9b,bd“轉換成客戶端操作系統字符集 ZHS16GBK 里“中國”兩字的編碼“d6,d0,b9,fa,并正常顯示。
經過了兩次轉換,都確實最正確、最推薦的方式。NLS_LANG 只和客戶端操作系統的字符集相關,如果客戶端操作系統的字符集和數據庫字符集間無法正確轉換,則應該首先改變客戶端終端的字符集,而不是簡單地把 NLS_LANG 設為和數據庫字符集一樣。
到此,相信大家對“Oracle 字符集的基本原理”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!