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

JavaScript中含特殊字符的编码字符串解码方案

原生JavaScript解码HTML实体编码字符串(支持多语言)

你遇到的是HTML十进制实体编码,这类编码和URI编码不属于同一范畴,所以decodeURIComponent()、escape()这类处理URI的方法完全不适用。下面提供两种原生JavaScript解法,均不受语言限制:

方法一:利用DOM解析(浏览器环境优先)

浏览器的DOM引擎会自动解析HTML实体,我们可以借助临时元素实现解码:

function decodeHTMLEntities(str) {
  const tempDiv = document.createElement('div');
  tempDiv.innerHTML = str;
  return tempDiv.textContent || tempDiv.innerText;
}

// 测试示例
console.log(decodeHTMLEntities('Skæfte')); // 输出 Skæfte
console.log(decodeHTMLEntities('sølv')); // 输出 sølv

这种方法能处理所有标准HTML实体(包括&这类命名实体),无需关心字符所属语言,通用性极强。

方法二:纯正则+字符转码(无DOM依赖,支持Node.js)

如果不想依赖DOM环境,可以用正则匹配实体编码,再通过字符码点转码:

function decodeHTMLEntities(str) {
  // 匹配十进制实体(&#数字;)和十六进制实体(&#x十六进制数;)
  return str.replace(/&#(\d+);|&#x([a-fA-F0-9]+);/g, (match, decCode, hexCode) => {
    if (decCode) {
      return String.fromCharCode(decCode);
    }
    if (hexCode) {
      return String.fromCharCode(parseInt(hexCode, 16));
    }
    return match;
  });
}

// 测试示例
console.log(decodeHTMLEntities('Skæfte')); // Skæfte
console.log(decodeHTMLEntities('sølv')); // sølv

这个方法默认处理数值型实体,若需支持æ这类命名实体,可以扩展正则或维护实体映射表,对你的场景而言,现有代码已足够覆盖需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:40:41