js实现getbyte
在JavaScript中获取字符串的字节长度
JavaScript的字符串默认使用UTF-16编码,但实际字节长度会根据不同编码方式而变化。以下是几种获取字节长度的方法:
使用TextEncoder API(现代浏览器支持)

function getByteLength(str) {
return new TextEncoder().encode(str).length;
}
console.log(getByteLength("你好")); // 输出6(UTF-8编码下)
使用Blob对象

function getByteLength(str) {
return new Blob([str]).size;
}
console.log(getByteLength("abc")); // 输出3
手动计算UTF-8字节长度
function getUtf8ByteLength(str) {
let length = 0;
for (let i = 0; i < str.length; i++) {
const code = str.charCodeAt(i);
if (code <= 0x7f) {
length += 1;
} else if (code <= 0x7ff) {
length += 2;
} else if (code >= 0xd800 && code <= 0xdbff) {
// 处理代理对(surrogate pair)
length += 4;
i++;
} else {
length += 3;
}
}
return length;
}
console.log(getUtf8ByteLength("𝄞")); // 输出4
注意事项
- TextEncoder默认使用UTF-8编码
- Blob.size在不同浏览器中可能表现一致
- 手动计算方法需要处理代理对(surrogate pairs)
- ASCII字符始终占1个字节
- 中文在UTF-8中通常占3个字节
以上方法可以根据实际需求选择使用,现代浏览器推荐使用TextEncoder API。





