js实现getbyte
获取字符串字节长度的方法
在JavaScript中,字符串的字节长度可能因编码方式不同而变化。以下是几种常见的方法来计算字符串的字节长度:
使用Blob对象
Blob对象可以方便地获取字符串的字节长度:
function getByteLength(str) {
return new Blob([str]).size;
}
使用TextEncoder API
现代浏览器支持TextEncoder API,可以准确计算UTF-8编码下的字节长度:
function getByteLength(str) {
return new TextEncoder().encode(str).length;
}
手动计算UTF-8字节长度
对于需要兼容旧浏览器的情况,可以手动计算:
function getByteLength(str) {
let len = 0;
for (let i = 0; i < str.length; i++) {
const code = str.charCodeAt(i);
if (code <= 0x7f) {
len += 1;
} else if (code <= 0x7ff) {
len += 2;
} else if (code >= 0xd800 && code <= 0xdfff) {
len += 4;
i++;
} else {
len += 3;
}
}
return len;
}
计算ASCII字符串长度
如果确定字符串只包含ASCII字符,可以直接使用length属性:

function getAsciiByteLength(str) {
return str.length;
}
注意事项
不同编码方式会导致字节长度计算结果不同。UTF-8编码中,非ASCII字符可能占用2-4个字节。处理包含emoji或特殊字符的字符串时,推荐使用TextEncoder API或Blob方法。






