大家都知道,在JS中字串的長度不分中英文字符, 每一個字符都算一個長度,這跟PHP裡的strlen()函數就不太一樣。 PHP裡的strlen()函數依照字元集把GBK的中文每個2累加,把UTF-8的中文字元每個按3累加。
有些童鞋可能要問了,為什麼要計算實際長度?
主要是為了符合資料庫的長度範圍內,例如GBK的資料庫某欄位是varchar(10),那麼就相當於5個漢字長度,一個漢字等於兩個字母長度。如果是UTF8的資料庫則是每個漢字長度為3。
知道了以上原理以後,我們就可以算出一個字串的實際長度了,如果是GBK字元集遇到中文加2,如果是UTF8字元集遇到中文加3即可
GBK長度計算函數:
// GBK字元集實際長度計算
function getStrLeng(str){
var realLength = 0;
var len = str.length;
var charCode = -1;
for(var i = 0; i
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode
realLength = 1;
}else{
// 若是中文長度加2
realLength = 2;
}
}
return realLength;
}
UTF8長度計算函數:
// UTF8字元集實際長度計算
function getStrLeng(str){
var realLength = 0;
var len = str.length;
var charCode = -1;
for(var i = 0; i
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode
realLength = 1;
}else{
// 若是中文長度加3
realLength = 3;
}
}
return realLength;
}