当前位置:首页 > JavaScript

js 实现 unicode

2026-02-01 19:52:42JavaScript

Unicode 编码与解码

在 JavaScript 中,Unicode 可以通过多种方式处理,包括字符串字面量、转义序列和 API 方法。

字符串中使用 Unicode 直接使用 Unicode 字符:

const str = '你好'; // 直接包含 Unicode 字符

使用 Unicode 转义序列(\uXXXX 格式):

const str = '\u4F60\u597D'; // "你好" 的 Unicode 转义

编码转换 将字符串转换为 Unicode 编码数组:

function toUnicode(str) {
  return Array.from(str).map(char => 
    '\\u' + char.charCodeAt(0).toString(16).padStart(4, '0')
  ).join('');
}
console.log(toUnicode('你好')); // 输出 \u4f60\u597d

解码 Unicode 转义序列\uXXXX 格式的字符串转换为实际字符:

js 实现 unicode

function decodeUnicode(str) {
  return str.replace(/\\u[\dA-F]{4}/gi, 
    match => String.fromCharCode(parseInt(match.replace(/\\u/g, ''), 16))
  );
}
console.log(decodeUnicode('\\u4f60\\u597d')); // 输出 "你好"

处理高位 Unicode(代理对)

对于超出 BMP(基本多语言平面)的字符(如表情符号),需要使用代理对处理:

检查是否为代理对

function isSurrogatePair(char) {
  const code = char.charCodeAt(0);
  return code >= 0xD800 && code <= 0xDBFF;
}

完整 Unicode 编码获取

js 实现 unicode

function getFullUnicode(str) {
  let result = [];
  for (let i = 0; i < str.length; i++) {
    const high = str.charCodeAt(i);
    if (isSurrogatePair(str[i])) {
      const low = str.charCodeAt(++i);
      const code = (high - 0xD800) * 0x400 + (low - 0xDC00) + 0x10000;
      result.push('\\u{' + code.toString(16) + '}');
    } else {
      result.push('\\u' + high.toString(16).padStart(4, '0'));
    }
  }
  return result.join('');
}
console.log(getFullUnicode('😊')); // 输出 \u{1f60a}

ES6+ 特性

现代 JavaScript 提供更简洁的 Unicode 支持:

码点 API

'😊'.codePointAt(0).toString(16); // 返回 "1f60a"
String.fromCodePoint(0x1F60A); // 返回 "😊"

Unicode 正则支持

/\p{Emoji}/u.test('😊'); // true

字符串迭代 正确处理代理对:

[...'a😊b'].length; // 3(传统方法会返回4)

注意事项

  • 避免混淆 charCodeAt(UTF-16 编码单元)和 codePointAt(完整码点)
  • 处理网络传输时确保字符编码声明为 UTF-8
  • 文件保存时使用 UTF-8 编码以避免乱码

标签: jsunicode
分享给朋友:

相关文章

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js钟表实现

js钟表实现

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

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…