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;
}作者最新文章
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
JavaScript函数定义的三种方式:声明、表达式与箭头函数
2026-11-05 13:50:55
JavaScript中escape、encodeURI和encodeURIComponent对空格的处理差异
2026-11-05 12:47:23
