【问题标题】:How to convert HTML entities into special characters using plain JavaScript如何使用纯 JavaScript 将 HTML 实体转换为特殊字符
【发布时间】:2013-10-07 05:29:36
【问题描述】:

在 bucabay 的帮助下,我们能够将特殊字符编码为 html 实体 以下链接供参考: (How to convert characters to HTML entities using plain JavaScript) 现在我们要对它们进行解码,即如何再次将 HTML 实体转换为特殊字符。

问候, AA。

【问题讨论】:

标签: html decode entities


【解决方案1】:

您可以使用基本的 javascript 或使用 jQuery..

newText = "Übergroße Äpfel mit Würmern";

var my_unescaped_text = jQuery('').html(newText).text();

【讨论】:

  • 需要将那些html实体转换成特殊字符。
  • 这会以跨站点脚本漏洞的形式引入安全风险:如果输入 (newText) 包含类似 <svg onload=alert(1)> 的内容,则将执行 alert(1)。这个解决方案还依赖于浏览器对字符引用的支持,即使在现代浏览器中也不是完美的:mathias.html5.org/tests/html 它也不会在非浏览器环境中工作。
【解决方案2】:

您可以通过让浏览器将文本解析为 HTML 来做到这一点,例如

var text = "Übergroße Äpfel mit Würmern";
var span = document.createElement('span');
span.innerHTML = text;
alert(span.innerHTML); // contains the characters as decoded

【讨论】:

  • 这会以跨站点脚本漏洞的形式引入安全风险:如果输入 (text) 包含类似 <svg onload=alert(1)> 的内容,则将执行 alert(1)。这个解决方案还依赖于浏览器对字符引用的支持,即使在现代浏览器中也不是完美的:mathias.html5.org/tests/html 它也不会在非浏览器环境中工作。
  • @MathiasBynens,问题中没有任何内容表明数据来自外部来源。恰恰相反:数据被描述为通过将某些字符编码为实体来创建。
【解决方案3】:

对于避免其他答案中的问题的可靠解决方案,请使用the he library。从它的自述文件中:

he(用于“HTML 实体”)是用 JavaScript 编写的强大的 HTML 实体编码器/解码器。它支持all standardized named character references as per HTML,处理ambiguous ampersands 和其他极端情况just like a browser would,具有广泛的测试套件,并且——与许多其他JavaScript 解决方案相反——he 可以很好地处理星体Unicode 符号。 An online demo is available.

以下是您的使用方法:

var html = 'Übergroße Äpfel mit Würmern';
var decoded = he.decode(html);
// → `decoded` is now 'Übergroße Äpfel mit Würmern'

See this related Stack Overflow answer.And this one, too.

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多