JavaScript计算字符串字节长度:UTF-8与GBK编码处理方案

作者:小括号

时间:2026-10-27

浏览:276

本文介绍在JavaScript中如何准确计算包含中文的字符串字节长度。由于不同编码格式下字符占用的字节数不同,UTF-8编码中中文通常占3个字节,而GBK编码中占2个字节。文章提供了多种实现方案,包括基于charCodeAt判断ASCII与非ASCII字符、正则匹配汉字范围以及区分UTF-8和GBK编码的具体函数实现,帮助开发者根据实际需求选择合适的方法。

文章目录

JavaScript计算字符串字节长度:UTF-8与GBK编码处理方案

方案一:

代码示例如下:

function byteLength(str) {
var byteLen = 0, len = str.length;
if( !str ) return 0;
for( var i=0; i<len; i++ )
byteLen += str.charCodeAt(i) > 255 ? 2 : 1;
return byteLen;
}

说明:byteLength(str) 参数: string str: 要计算字节长度的字符串(非ASCII的字符算2字节) 方案二:

JS获取字符串实际长度!

今日新增功能:程序员常用的字符串长度检测工具,因JS默认中英文字符长度均为1,此处需自行判断并获取实际长度。

代码示例如下:

function GetLength(str) {
///<summary>获得字符串实际长度,中文2,英文1</summary>
///<param name="str">要获得长度的字符串</param>
var realLength = 0, len = str.length, charCode = -1;
for (var i = 0; i < len; i++) {
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode <= 128) realLength += 1;
else realLength += 2;
    }
return realLength;
};   

执行代码:

alert(GetLength('测试测试ceshiceshi)); 方案三: 暂未通过测试

代码示例如下:

 
function getByteLen(val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
if (val[i].match(/[\u4e00-\u9fa5 ]/ig) != null)
len += 2;
else
len += 1;
} 
return len;
} 


方案四:

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

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章