JavaScript计算GBK与UTF-8字符串实际长度

作者:代码拾荒时间:2026-10-28 13:38:13浏览:203

本文介绍如何在JavaScript中计算字符串的实际字节长度,以适配不同字符集数据库。通过遍历字符编码值,GBK字符集下中文按2计算,UTF-8字符集下中文按3计算,提供完整函数代码示例。

JavaScript字符串长度计算原理

在JavaScript中,字符串的length属性返回的是字符数量,不区分中英文,每个字符均计为1。这与PHP中的strlen()函数不同,后者依据字符集计算字节长度:GBK编码中每个汉字占2字节,UTF-8编码中每个汉字占3字节。

部分开发者可能会疑惑为何需要计算字符串的实际字节长度。

这主要是为了与数据库字段的长度限制相匹配。例如,在GBK编码的数据库中,若某varchar字段定义为varchar(10),则最多可存储5个汉字(因为一个汉字占2个字节,相当于两个字母)。而在UTF-8编码的数据库中,每个汉字占用3个字节,因此该字段最多只能存储3个汉字。

GBK与UTF-8长度计算函数实现

基于上述原理,我们可以编写函数来计算字符串的实际字节长度:遍历字符串,若字符为GBK编码则累加2,若为UTF-8编码则累加3。以下是GBK字符集的长度计算函数示例:

代码如下:

// 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长度计算函数:

代码如下:

// 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;
}
作者最新文章