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

JavaScript拼接Unicode出现「无效Unicode转义序列」报错如何解决?

报错根因
  • \u 是JavaScript语法级别的Unicode转义标识,解析阶段就要求紧跟4位十六进制字符,你代码中的\u003是不完整转义序列,解析器还没等到变量拼接就会直接抛出错误。
  • 你使用的split()未传分隔符参数,会将整个"5000"字符串作为数组唯一元素,无法拆分出单个数字,需要改为split('')。
修复方案

方案1:String.fromCodePoint实现(推荐)

直接通过码点计算生成对应字符,逻辑清晰无兼容问题:

let test = "5000",
    string = ''; // 必须初始化空字符串,否则拼接会自带undefined前缀

let unicode = test.split('')
for(let i = 0; i < unicode.length; i++) {
    // 0x30对应字符0的Unicode码点,加当前数字即可得到对应数字的码点
    const digitCode = 0x30 + Number(unicode[i]);
    string += String.fromCodePoint(digitCode, 0xFE0F, 0x20E3);
}

console.log(string);

运行后会输出你预期的带键帽样式的数字序列5⃣0⃣0⃣0⃣。

方案2:URI转义拼接实现

如果需要维持原有拼接逻辑,可以用URI转义规则处理:

let test = "5000",
    string = '';

let unicode = test.split('')
for(let i = 0; i < unicode.length; i++) {
    string += decodeURIComponent(`%u003${unicode[i]}%uFE0F%u20E3`);
}

console.log(string);

内容的提问来源于stack exchange,提问作者Tim Levinsson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:36:05