JavaScript

str.match(/[^ -~]/g).length

> 判斷有幾個全型及中文字,因為中文字代表三個長度,所以原字串長度需加上兩次中文的長度。

function StrLen(str){
 var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length + str.match(/[^ -~]/g).length ;
 return len;
}

 


 

引用文章:http://cch8.blogspot.tw/2010/12/varchar2.html

老問題:Varchar2的長度怎麼計算可以塞入多少中文字?

UNICODE的中文字一個字算3個BYTE,所以10BYTE頂多只能同時放三個中文字跟一個英文字


引用文章:http://www.itkee.com/database/detail-14b6.html

oracle中varchar,varchar2,nvarchar,nvarchar2的區別


3.VARCHAR2字符要用幾個字節存儲,要看數據庫使用的字符集,
比如GBK,漢字就會佔兩個字節,英文1個
如果是UTF-8,漢字一般佔3個字節,英文還是1個。
但是一般情況下,我們都認爲是兩個字節處理,因爲oracle安裝時候默認我們都選擇GBK的編碼格式,但是我們在頁面做輸入字符串長度的校驗的時候,還是以數據庫設計字段最大長度除3來作爲最大長度-----防止數據庫移植時設置不同編碼格式;
   比如:VARCHAR2(10),一般情況下最多存放5個漢字,10個字符

 

 


 

 

 


解決方式:
引用文章:http://www.dotblogs.com.tw/jimmyyu/archive/2009/04/28/8229.aspx

[Javascript]Javascript計算中英文長度

match(/[^ -~]/g); 

(mathch的方法說明:http://www.itxueyuan.org/view/5708.html)

 

引用文章:http://www.cnblogs.com/scottckt/p/3255433.html

//Oracle Varchar2 一个中文对应3个Byte,所以用3个x替换
    var commentValue = commentValue.replace(/[^\x00-\xff]/g, "xxx");
    if (commentValue.length > 500) {
        alert("Max length is 150 Chinese or 500 English");
        return false;
    }

 


 

arrow
arrow
    全站熱搜

    Nathan 發表在 痞客邦 留言(0) 人氣()