如何在JavaScript中将表情符号转换为Unicode转义序列
将Unicode字符转换为Unicode转义形式
要将Unicode字符(如冻脸表情🥶)转换成带双引号的Unicode转义字符串(如'"\\uD83E\\uDD76"'),可以通过手动遍历字符的UTF-16代码单元并生成转义序列来实现,以下是具体实现方案:
JavaScript实现
function unicodeEscape(str) { let escaped = ''; for (let i = 0; i < str.length; i++) { const charCode = str.charCodeAt(i); // 将字符码点转为四位十六进制的\u转义格式 escaped += '\\u' + charCode.toString(16).padStart(4, '0'); } // 用双引号包裹转义后的内容 return `"${escaped}"`; } // 测试示例 const emoji = '🥶'; const escapedStr = unicodeEscape(emoji); console.log(escapedStr); // 输出:"\\uD83E\\uDD76"(实际字符串为'"\\uD83E\\uDD76"') console.log(JSON.parse(escapedStr) === emoji); // 输出:true
Python实现
def unicode_escape(s): # 利用unicode-escape编码生成转义序列 escaped = s.encode('unicode-escape').decode('utf-8') # 包裹双引号返回 return f'"{escaped}"' # 测试示例 emoji = '🥶' escaped_str = unicode_escape(emoji) print(escaped_str) # 输出:"\\uD83E\\uDD76" import json print(json.loads(escaped_str) == emoji) # 输出:True
说明
JSON.stringify()无法直接得到目标结果,因为它仅会对不可打印的Unicode字符进行转义,对于表情这类可打印字符会直接输出原字符。- 上述方法会遍历字符串的每个UTF-16代码单元(对于像🥶这样的emoji,会拆分为两个代理字符
\uD83E和\uDD76),将每个单元转为\uXXXX格式的转义序列,最终包裹双引号,生成的字符串可通过JSON.parse()还原为原字符。
内容的提问来源于stack exchange,提问作者Gabriel Furstenheim
相关产品推荐
相关产品推荐

