JavaScript實現(xiàn)的GBK、UTF8字符串實際長度計算函數(shù)
大家都知道,在JS中字符串的長度不分中英文字符, 每一個字符都算一個長度,這跟PHP里的strlen()函數(shù)就不太一樣。PHP里的strlen()函數(shù)根據(jù)字符集把GBK的中文每個2累加,把UTF-8的中文字符每個按3累加。
有些童鞋可能要問了,為什么要計算實際長度?
主要是為了匹配數(shù)據(jù)庫的長度范圍內(nèi),比如GBK的數(shù)據(jù)庫某字段是varchar(10),那么就相當于5個漢字長度,一個漢字等于兩個字母長度。如果是UTF8的數(shù)據(jù)庫則是每個漢字長度為3。
知道了以上原理以后,我們就可以算出一個字符串的實際長度了,如果是GBK字符集遇到中文加2,如果是UTF8字符集遇到中文加3即可
GBK長度計算函數(shù):
// GBK字符集實際長度計算
function getStrLeng(str){
var realLength = 0;
var len = str.length;
var charCode = -1;
for(var i = 0; i < len; i++){
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode <= 128) {
realLength += 1;
}else{
// 如果是中文則長度加2
realLength += 2;
}
}
return realLength;
}
UTF8長度計算函數(shù):
// UTF8字符集實際長度計算
function getStrLeng(str){
var realLength = 0;
var len = str.length;
var charCode = -1;
for(var i = 0; i < len; i++){
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode <= 128) {
realLength += 1;
}else{
// 如果是中文則長度加3
realLength += 3;
}
}
return realLength;
}
相關(guān)文章
JavaScript中的操作符類型轉(zhuǎn)換示例總結(jié)
最近發(fā)現(xiàn)在前端的面試題目中經(jīng)常出現(xiàn)操作符類型轉(zhuǎn)換的題目,于是這里來進行一個JavaScript中的操作符類型轉(zhuǎn)換示例總結(jié),需要的朋友可以參考下2016-05-05ParseInt函數(shù)參數(shù)設(shè)置介紹
經(jīng)常用ParseInt函數(shù)轉(zhuǎn)換字符串為int數(shù)值,ParseInt函數(shù)有兩個參數(shù)可以設(shè)置,其中第二個參數(shù)可以缺省2014-01-01JavaScript的三大前端框架Vue和Angular和React
這篇文章主要為大家介紹了JavaScript的三大前端框架Vue和Angular和React,文章中有詳細的代碼示例,有需要的朋友可以借鑒參考下,2023-04-04

Javascript學(xué)習(xí)筆記一 之 數(shù)據(jù)類型

javascript定義變量時加var與不加var的區(qū)別

詳解JavaScript正則表達式中的global屬性的使用