当前位置:首页 > JavaScript

js实现getbyte

2026-01-31 13:20:09JavaScript

在JavaScript中获取字符串的字节长度

JavaScript的字符串默认使用UTF-16编码,但实际字节长度会根据不同编码方式而变化。以下是几种获取字节长度的方法:

使用TextEncoder API(现代浏览器支持)

js实现getbyte

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

使用Blob对象

js实现getbyte

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。

标签: jsgetbyte
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…