js实现getbyte
获取字符串的字节长度
在JavaScript中,字符串的字节长度取决于所使用的编码方式。常见的编码如UTF-8中,一个字符可能占用1到4个字节。以下是几种计算字符串字节长度的方法:
方法一:使用TextEncoder API(现代浏览器支持)

function getByteLength(str) {
return new TextEncoder().encode(str).length;
}
console.log(getByteLength("你好")); // 输出6(UTF-8编码下每个中文字符占3字节)
方法二:Blob对象方式

function getByteLength(str) {
return new Blob([str]).size;
}
console.log(getByteLength("abc")); // 输出3
方法三:手动计算UTF-8字节长度
function getByteLength(str) {
let bytes = 0;
for (let i = 0; i < str.length; i++) {
const code = str.charCodeAt(i);
bytes += code < 128 ? 1 : code < 2048 ? 2 : 3;
}
return bytes;
}
console.log(getByteLength("A®文")); // 输出5(1+2+2)
注意事项
- 如果字符串包含代理对(如emoji),方法三需要额外处理四字节字符
- 在Node.js环境中可以直接使用Buffer.byteLength方法:
Buffer.byteLength("中文", 'utf8'); // 返回6
不同编码的影响
指定不同编码会得到不同的字节长度结果:
// Node.js示例
console.log(Buffer.byteLength("中文", 'utf16le')); // 输出4
console.log(Buffer.byteLength("中文", 'utf8')); // 输出6






