当前位置:首页 > JavaScript

js 实现 unicode

2026-03-14 19:04:28JavaScript

Unicode 编码与解码

在 JavaScript 中,字符串是基于 Unicode 编码的,可以直接处理 Unicode 字符。以下是常见的 Unicode 操作方法:

直接使用 Unicode 字符

JavaScript 字符串可以直接包含 Unicode 字符:

const str = '你好世界'; // 直接使用 Unicode 字符

使用 Unicode 转义序列

通过 \u 前缀加上 4 位十六进制数表示 Unicode 字符:

const str = '\u4F60\u597D\u4E16\u754C'; // "你好世界"

获取字符的 Unicode 编码

使用 charCodeAt() 方法获取字符的 UTF-16 编码(0-65535):

'A'.charCodeAt(0); // 65

对于超出 BMP(基本多语言平面)的字符(如 emoji),使用 codePointAt()

'😊'.codePointAt(0); // 128522

从 Unicode 编码生成字符

使用 String.fromCharCode() 从 UTF-16 编码生成字符:

String.fromCharCode(65); // "A"

对于高位 Unicode 编码(> 0xFFFF),使用 String.fromCodePoint()

String.fromCodePoint(128522); // "😊"

处理代理对

高位 Unicode 字符(如 emoji)在 UTF-16 中由代理对表示:

const emoji = '😊';
emoji.length; // 2(代理对占用 2 个码元)
[...emoji].length; // 1(扩展运算符能正确识别)

正则表达式与 Unicode

启用 u 标志使正则表达式支持 Unicode:

/^\u{1F600}$/u.test('😀'); // true

字符串迭代

使用 for...of 或扩展运算符可正确迭代 Unicode 字符:

for (const char of '👨👩👧👦') {
  console.log(char); // 正确输出每个字符(包括组合字符)
}

常见编码转换

转换为 UTF-8 字节数组:

function encodeUTF8(str) {
  return new TextEncoder().encode(str);
}
encodeUTF8('你好'); // Uint8Array [228, 189, 160, 229, 165, 189]

从 UTF-8 解码:

js 实现 unicode

function decodeUTF8(bytes) {
  return new TextDecoder().decode(bytes);
}
decodeUTF8(new Uint8Array([228, 189, 160, 229, 165, 189])); // "你好"

注意事项

  • JavaScript 内部使用 UTF-16 编码字符串
  • 高位字符(如 emoji)会占用两个码元(length 为 2)
  • 使用 codePointAt()fromCodePoint() 处理高位字符更可靠
  • 现代浏览器已全面支持 Unicode 13.0+ 标准

标签: jsunicode
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…