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

React Native中decodeURIComponent无法解码HTML实体问题求助

为什么decodeURIComponent没有生效

decodeURIComponent() 的设计目标是解码URI百分号编码(例如将%20转换为空格、%27转换为单引号),你拿到的'属于双重转义的HTML实体编码,和URI编码是完全不同的编码体系,所以调用该方法不会产生任何效果。

你拿到的字符串的编码逻辑是:

  • 原始单引号'的标准HTML实体编码为'
  • 接口返回时额外对&做了一次HTML转义,变成&,最终拼接为'
解决方案

你可以根据业务场景选择以下两种方案:

方案1:自定义简易解码函数

如果仅需要处理少量常见的HTML实体,无需引入第三方依赖,自己实现转换逻辑即可:

const decodeHtml = (rawStr) => {
  // 先还原第一层转义的&符号
  let processed = rawStr.replace(/&/g, '&');
  // 常见HTML实体映射表
  const entityMap = {
    ''': "'",
    '"': '"',
    '&lt;': '<',
    '&gt;': '>',
    '&nbsp;': ' '
  };
  return processed.replace(/&#?[a-zA-Z0-9]+;/g, match => entityMap[match] || match);
}

在你的业务代码中替换解码逻辑即可:

let trackName = decodeHtml(data['current']['name']);

方案2:使用专业HTML编解码库

如果接口会返回各类复杂的HTML实体,推荐使用专门处理HTML实体的he库,兼容性和覆盖度更高:

  1. 安装依赖
npm install he
  1. 调用解码
import he from 'he';

// 业务逻辑中直接调用
let trackName = he.decode(data['current']['name']);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:36:02