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 = { ''': "'", '"': '"', '<': '<', '>': '>', ' ': ' ' }; return processed.replace(/&#?[a-zA-Z0-9]+;/g, match => entityMap[match] || match); }
在你的业务代码中替换解码逻辑即可:
let trackName = decodeHtml(data['current']['name']);
方案2:使用专业HTML编解码库
如果接口会返回各类复杂的HTML实体,推荐使用专门处理HTML实体的he库,兼容性和覆盖度更高:
- 安装依赖
npm install he
- 调用解码
import he from 'he'; // 业务逻辑中直接调用 let trackName = he.decode(data['current']['name']);
内容的提问来源于stack exchange,提问作者Jee
相关产品推荐
相关产品推荐

