近期在進行系統公升級部署的時候,發現不同地區的資料庫編碼格式不一致,按照正常的編碼設定,乙個漢字占用2個位元組,但是在有的系統,由於編碼要求,可能乙個漢字就會占用3個或者4個位元組,如圖所示
引起這樣的原因一般有兩個:
一:因為oracle資料庫它可以儲存位元組或字元,例如 char(12 byte) char(12 char)的意義是不同的.一般來說預設是儲存位元組,你可以檢視資料庫引數nls_length_semantics的值。
二:oracle資料庫漢字占用幾個位元組,要根據oracle中字符集編碼決定,一般情況下,資料庫的nls_characterset 為al32utf8或utf8,即乙個漢字占用三到四個位元組。如果nls_characterset為zhs16gbk,則乙個字元占用兩個位元組.
輸入如下sql:
至於具體情況,可以通過lengthb或者vsize函式求得是占用位元組數。
length函式求得是占用字元數,lengthb或者vsize函式求得是占用位元組數。
length是計算字元的個數,輸入的引數先被轉為字元型別計算
對於解決方案,將資料庫nls_database_parameters表裡頭的nls_characterset進行相關的調整即可。
ORACLE 中漢字佔幾個位元組?
一直認為中文再oracle中也是占用兩個字元 乙個字元占用乙個位元組 寫pl sql的時候報緩衝區溢位,被同事糾正,乙個漢字不止占用2個位元組,根據引數的不同,可能占用多個 2 4個 可以用下面的sql select from v nls parameters where parameter nls...
Oracel漢字佔幾個位元組
1 檢視oracle server端字符集 如果顯示如下 simplified chinese china.zhs16gbk,乙個漢字占用兩個位元組 如果顯示如下 simplified chinese china.al32utf8,乙個漢字占用三個位元組 select lengthb 你 from ...
漢字佔幾個字元
不同的編碼方式,漢字所佔的字元是不同的。國家標準gb2312 乙個漢字 2個位元組 utf 8 乙個漢字 3個位元組 乙個漢字是乙個字元,兩個或三個位元組。在判斷的時候,可以注意下,看判斷是字元還是位元組。位元組是儲存的時候所佔得大小。例如,在做使用者名稱判斷的時候,使用者名稱的規則是 2到6個漢字...