js中字符串转\u(unicode编码)

在 JavaScript 中,将字符串转换为 \u 格式的 Unicode 转义序列有几种方法:

1. 使用 JSON.stringify()

function stringToUnicode(str) {
  return JSON.stringify(str).slice(1, -1);
}

// 示例
console.log(stringToUnicode("Hello")); // "Hello"(普通字符不变)
console.log(stringToUnicode("你好")); // "\u4f60\u597d"
console.log(stringToUnicode("A🎉")); // "A\uD83C\uDF89"

2. 手动转换每个字符

function stringToUnicode(str) {
  let result = '';
  for (let i = 0; i < str.length; i++) {
    const code = str.charCodeAt(i);
    if (code > 127) {
      result += '\\u' + code.toString(16).padStart(4, '0');
    } else {
      result += str[i];
    }
  }
  return result;
}

// 示例
console.log(stringToUnicode("Hello")); // "Hello"
console.log(stringToUnicode("你好")); // "\u4f60\u597d"

3. 处理所有字符(包括 ASCII)

function stringToUnicodeAll(str) {
  let result = '';
  for (let i = 0; i < str.length; i++) {
    const code = str.charCodeAt(i);
    result += '\\u' + code.toString(16).padStart(4, '0');
  }
  return result;
}

// 示例
console.log(stringToUnicodeAll("Hello")); // "\u0048\u0065\u006c\u006c\u006f"
console.log(stringToUnicodeAll("你好")); // "\u4f60\u597d"

4. 处理代理对(Surrogate Pairs)

对于表情符号等需要代理对的字符:

function stringToUnicodeFull(str) {
  let result = '';
  for (let i = 0; i < str.length; i++) {
    const code = str.codePointAt(i);
    if (code > 0xFFFF) {
      // 代理对字符
      result += '\\u' + ((code - 0x10000) >> 10 | 0xD800).toString(16).padStart(4, '0');
      result += '\\u' + ((code - 0x10000) & 0x3FF | 0xDC00).toString(16).padStart(4, '0');
      i++; // 跳过下一个代码单元
    } else {
      result += '\\u' + code.toString(16).padStart(4, '0');
    }
  }
  return result;
}

// 示例
console.log(stringToUnicodeFull("A🎉")); // "\u0041\uD83C\uDF89"

5. 反向转换(Unicode 转字符串)

function unicodeToString(unicodeStr) {
  return unicodeStr.replace(/\\u[\dA-F]{4}/gi, 
    match => String.fromCharCode(parseInt(match.replace(/\\u/g, ''), 16))
  );
}

// 示例
console.log(unicodeToString("\\u4f60\\u597d")); // "你好"
console.log(unicodeToString("Hello\\u4e16\\u754c")); // "Hello世界"

使用场景

  • 数据传输:在网络传输或存储时使用 Unicode 转义
  • 安全处理:防止特殊字符引起的问题
  • 国际化:处理多语言文本

选择哪种方法取决于你的具体需求:

  • 如果只需要转换非 ASCII 字符,使用方法 1 或 2
  • 如果需要完整转换所有字符,使用方法 3
  • 如果需要处理表情符号等复杂字符,使用方法 4
JS中进行字符串unicode化,一般是用于字符串加密。如果使用JS加密工具,比如:JShaman、JS-Obfuscator、JsJiami.online,会更方便快捷,而且不止可以加密字符串,更能对代码整体进行加密。

https://www.jshaman.com
https://www.js-obfuscator.com
https://jsjiami.online

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值