Oracle-一個中文漢字占幾個字節?


 

Oracle 一個中文漢字占用幾個字節

Oracle 一個中文漢字 占用幾個字節,要根據Oracle中字符集編碼決定!!!

 

1. 如果定義為VARCHAR2(32 CHAR),那么該列最多就可以存儲32個漢字,如果定義字段為VARCHAR2(32) 或VARCHAR2(32 BYTE)那么它最多可以存儲多少個漢字就要視數據庫字符集編碼決定

 ***************************************************************

2.ORACLE數據庫中文可以存儲字節或字符,例如 CHAR(32 BYTE) CHAR(32 CHAR)的意義是不同的.一般來說默認是存儲字節,你可以查看數據庫參數NLS_LENGTH_SEMANTICS的值

 ***************************************************************

SQL> show parameter nls_length_semantics;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
nls_length_semantics string BYTE

 

select userenv('language') from dual;

 

SIMPLIFIED CHINESE_CHINA.ZHS16GBK     :   一個漢字占用兩個字節

SIMPLIFIED CHINESE_CHINA.AL32UTF8      :   一個漢字占用三個字節

***************************************************************

3. 求的中文占用多少個字符和多少個字節使用下面的函數.

 

SQL> SELECT LENGTH('您好') FROM DUAL; --LENGTH函數求得是占用字符數

LENGTH('您好')
--------------
2

SQL> SELECT LENGTHB('您好') FROM DUAL; --LENGTHB或者VSIZE函數求得是占用字節數

LENGTHB('您好')
---------------
6

***************************************************************

4.  前台JS驗證輸入的字符串長度函數

 

        /**
         * yangw
         * 字符串長度的統計--中英文的問題
         */
        
        // 由於Oracle中,一個UTF-8編碼的漢字占 3個字節  GBK編碼的漢字占兩個字節
        // 成都農商行使用到的數據庫編碼是 AL32UTF8---故下面替換為3個a
           var len= element.value.replace(/[^\x00-\xff]/g,"aaa").length; 
           
        if(len>length){
            showError(element, "的長度必須小於等於"+length+'字節,中文占三個字節,其它占1個字節', hasFrame);
            return false;
        }

 

 

參考文章: http://www.cnblogs.com/kerrycode/archive/2013/12/10/3466993.html

               http://www.linuxidc.com/Linux/2013-03/81732.htm

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM