后端返回的\u003c\u003e等中文Unicode编码格式,前端js如何转为HTML?

 更新时间:2025年08月02日 09:10:05   作者:冯宣  
在前后端交互中,有时后端返回的HTML内容会被转义为类似“u003c”、“u003e”的Unicode编码格式,这种编码方式虽然能防止XSS攻击,但在前端展示时会显示为乱码而非正常的HTML结构,如何在前端将这些被转义的Unicode字符还原为可正常渲染的HTML?

1. 问题背景与分析

在前后端交互中,后端返回的数据可能经过安全编码处理,将HTML特殊字符转换为Unicode转义序列(如“<”转为“u003c”,“>”转为“u003e”)。这种做法有效防止了XSS攻击,但前端接收到数据后直接插入DOM会导致乱码显示。

例如,后端返回的JSON数据:

{
    "content": "u003cbu003e加粗文本u003c/bu003e"
}

如果直接将内容插入到DOM中,浏览器会将其作为纯文本显示,而非渲染成HTML结构。

2. 关键技术点解析

解决此问题的关键技术点在于:Unicode转义字符的解码HTML字符串的安全渲染。以下是具体的技术要点:

  • 使用JavaScript内置方法对Unicode转义字符进行解码。
  • 确保解码后的HTML字符串能够安全地插入到DOM中,避免引入新的XSS风险。

以下是两种常见的实现方式:

2.1 使用String.fromCharCode解码

可以通过正则表达式匹配所有Unicode转义字符,并使用`String.fromCharCode`将其还原为原始字符。

function decodeUnicode(str) {
    return str.replace(/\\u[\dA-F]{4}/gi, function(match) {
        return String.fromCharCode(parseInt(match.replace(/\\u/g, ''), 16));
    });
}

const decodedStr = decodeUnicode('u003cbu003e加粗文本u003c/bu003e');
console.log(decodedStr); // 输出: <b>加粗文本</b>

2.2 使用DOMParser解析HTML

通过`DOMParser`将解码后的HTML字符串解析为DOM节点,再插入到页面中。

function renderSafeHTML(htmlStr) {
    const parser = new DOMParser();
    const doc = parser.parseFromString(htmlStr, 'text/html');
    return doc.body.innerHTML;
}

const safeHTML = renderSafeHTML('<b>加粗文本</b>');
document.getElementById('container').innerHTML = safeHTML;

3. 解决方案流程图

以下是解决方案的整体流程图:

graph TD; A[接收JSON数据] --> B{是否包含Unicode转义?}; B --是--> C[调用decodeUnicode解码]; C --> D[使用DOMParser解析HTML]; D --> E[插入到DOM中]; B --否--> F[直接插入DOM];

4. 注意事项与扩展思考

在实际开发中需要注意以下几点:

  • 确保解码逻辑只应用于可信来源的数据,避免引入XSS漏洞。
  • 对于复杂的HTML结构,可以考虑使用第三方库(如DOMPurify)进一步增强安全性。
  • 如果项目中频繁涉及类似需求,可以封装一个通用工具函数以提高代码复用性。

此外,还可以结合前后端约定,尽量减少后端返回的转义字符,从而降低前端处理复杂度。

到此这篇关于后端返回的\u003c\u003e等Unicode编码格式,前端js如何转为HTML?的文章就介绍到这了,更多相关js将Unicode编码转为HTML内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • TypeScript 接口继承的具体使用

    TypeScript 接口继承的具体使用

    本文主要介绍了TypeScript 接口继承的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 微信小程序导入项目后报错找不到app.json简单解决办法

    微信小程序导入项目后报错找不到app.json简单解决办法

    微信小程序的全局配置保存在app.json文件中,这篇文章主要介绍了微信小程序导入项目后报错找不到app.json简单的解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2025-06-06
  • HTML DOM的nodeType值介绍

    HTML DOM的nodeType值介绍

    将HTML DOM中几个容易常用的属性做下记录,需要的朋友可以参考下。
    2011-03-03
  • 微信小程序日期时分组件(年月日时分)

    微信小程序日期时分组件(年月日时分)

    这篇文章主要为大家详细介绍了微信小程序日期时分组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • JavaScript中Array的常用方法举例详解

    JavaScript中Array的常用方法举例详解

    这篇文章主要介绍了JavaScript中Array常用方法的相关资料,JavaScript的Array对象提供多种方法,涵盖创建、增删、查找、遍历、转换、排序等操作,文中给出了详细的代码示例,需要的朋友可以参考下
    2025-06-06
  • javascript实现手动点赞效果

    javascript实现手动点赞效果

    这篇文章主要为大家详细介绍了javascript实现手动点赞效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 一文详解PDF.js的使用及其跨域问题解决

    一文详解PDF.js的使用及其跨域问题解决

    PDF.js是一个JavaScript库,可在浏览器中无插件显示PDF,提供缩放、翻页、文本搜索等功能,下面这篇文章主要介绍了PDF.js的使用及其跨域问题解决的相关资料,需要的朋友可以参考下
    2025-04-04
  • js 走马灯简单实例

    js 走马灯简单实例

    这篇文章主要介绍了js 走马灯简单实例,有需要的朋友可以参考一下
    2013-11-11
  • 利用js正则表达式验证手机号,email地址,邮政编码

    利用js正则表达式验证手机号,email地址,邮政编码

    利用js正则表达式验证手机号,email地址,邮政编码。需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • 微信小程序实现手指触摸画板

    微信小程序实现手指触摸画板

    这篇文章主要为大家详细介绍了微信小程序实现手指触摸画板,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论