You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中将Unicode字符转换为符号/特殊字符

问题分析与解决方案

核心问题

你写的正则表达式是用来匹配HTML实体编码(如(),但你的字符串中是JS的Unicode转义序列(如\u0028),两者格式完全不同,导致正则匹配失败,替换无效。

另外需要注意:如果你的字符串是直接写的'Hello \u0028 Hi \u0029',在JS执行时,\u0028会被自动解析为左括号(,\u0029解析为右括号),此时字符串本身已经是你想要的结果,不需要额外转换。

正确解决方案

如果你的字符串实际包含字面量的\u0028(比如从后端获取的字符串是"Hello \\u0028 Hi \\u0029"),可以用以下代码处理:

<!DOCTYPE html>
<html>
<head>
    <title>Page Title</title>
</head>
<body>
<script>
    // 用转义反斜杠确保字符串中是字面量的\u0028
    var str = 'Hello \\u0028 Hi \\u0029';
    var res = str.replace(/\\u([0-9a-fA-F]{4})/g, function(match, hexStr) {
        var num = parseInt(hexStr, 16); // 将十六进制转为十进制
        return String.fromCharCode(num);
    });
    console.log(res); // 输出:Hello ( Hi )
</script>
<h1>This is a Heading</h1>
<p>This is a paragraph.</p>
</body>
</html>

代码说明

  • 正则/\\u([0-9a-fA-F]{4})/g:匹配字符串中字面量的\u开头,后跟4位十六进制数字的序列
  • 回调函数中,将捕获到的十六进制字符串转为十进制数字,再用String.fromCharCode()转换为对应字符

内容的提问来源于stack exchange,提问作者anguler-developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 11:21:06