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;
}