【问题标题】:Decode HTML character references in JavaScript string解码 JavaScript 字符串中的 HTML 字符引用
【发布时间】:2013-08-22 14:02:40
【问题描述】:

在我的程序中,我在条目中有这个字符串:

var toto = "Loïc";

我想解码这个字符串以获得:

'Loïc'

我该怎么做?

【问题讨论】:

    标签: javascript unicode encoding html-entities


    【解决方案1】:

    ÃÃ 是实体编号。你可以使用这个:

    var element = document.createElement('div');
    element.innerHTML = toto;
    console.log(element.textContent);
    > "Loïc"
    

    【讨论】:

    • 请注意,这仅适用于浏览器,不适用于 Node.js 等非浏览器 JavaScript 环境。此外,它在 HTML 实体的错误实现的浏览器中返回不正确的结果。为确保结果正确,use a library.
    【解决方案2】:

    查看内置的 JavaScript 函数 encodeURIComponent(str)encodeURI(str)

    var muUrl="http://www.google.com?ul=اردوان";
    var myUrl2 = "http://XXXX.com/default.aspx?link=" + encodeURIComponent(myUrl);
    

    在你的情况下,这应该可以工作

    【讨论】:

    • 编码 URI 组件如何帮助解码 HTML 实体?
    【解决方案3】:

    这些是 HTML 字符引用,也称为“HTML 实体”。

    要在 JavaScript 中解码(或编码)它们,最好使用the he libraryhe(用于“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 input = 'foo © bar ≠ baz 𝌆 qux';
    var output = he.decode(input);
    console.log(output);
    // → 'foo © bar ≠ baz ? qux'
    

    (顺便说一句,所有这些都与 UTF-8 编码无关。我已经从这个问题中删除了标签。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多