梦相随1006

版权归 梦相随1006 所有,未经 https://www.cnblogs.com/xin1006 作者许可,严禁转载

导航

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

 

posted on 2016-04-07 16:52  梦相随1006  阅读(3846)  评论(0编辑  收藏  举报