Oracle資料庫的編碼設定可使用下面SQL查詢。
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
-- or
SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET');
-- or
SELECT USERENV('LANGUAGE') FROM DUAL;
查詢結果類似如下
+------------------+----------+
| PARAMETER | VALUE |
+------------------+----------+
| NLS_CHARACTERSET | AL32UTF8 |
+------------------+----------+
而如果你查詢以下,可以看到另一個NLS_NCHAR_CHARACTERSET
參數。
SELECT * FROM NLS_DATABASE_PARAMETERS;
NLS_CHARACTERSET
和NLS_NCHAR_CHARACTERSET
的差別是:
NLS_CHARACTERSET
定義CHAR
, VARCHAR2
,CLOB
;
而NLS_NCHAR_CHARACTERSET
定義NCHAR
,NVARCHAR2
,NCLOB
如果你的NLS_CHARACTERSET
是ZHT16BIG5
則為BIG5編碼,每個中文字佔2 Bytes的長度;
如果是AL32UTF8
則每個中文字佔3 Bytes的長度。
可使用LENGTHB
函式來確認中文占的bytes長度。
SELECT LENGTHB( '中文' ) AS BYTES_LENGTH FROM DUAL;
參考:
沒有留言:
張貼留言