当前位置:首页 > 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实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…