【问题标题】:Getting HTML entities into document.createTextNode将 HTML 实体放入 document.createTextNode
【发布时间】:2013-09-12 05:17:49
【问题描述】:

假设我有一个这样创建的字符串:str = '\\' + 'u00eb'。如果我做document.createTextNode(str),它会给我'\u00eb',而不是ë。不要问我为什么,但我不能将我的字符串定义为str = '\u00eb'。将我的字符串定义为str = 'ë''ë' 也对我没有帮助。有关如何打印'ë' 的任何建议?

【问题讨论】:

  • 为什么不能定义为str = '\u00eb'
  • 一种可能性是var s = eval('"\\' + 'u00eb"');。我知道你说过不要问为什么,但我很好奇为什么你不能直接在你的代码中使用正确的转义序列
  • str = '\' + 'u00eb' 是语法错误。
  • 我不能直接写 '\u00eb',因为我使用 XMLHttpRequest 从 XML 文件中获取字符串,对此我的控制有限。
  • @PieterN 那么您将不得不用自己的代码解释数值,然后使用String.fromCharCode() 来构建字符串。

标签: javascript string entities createtextnode


【解决方案1】:

怎么样

var str = String.fromCharCode(0xeb);

【讨论】:

  • 如果我要翻译的总是 0xeb,那应该可以。不幸的是, str 可以包含各种字符......抱歉我的提问不清楚
  • @PieterN 正如我在对您的问题的评论中所说的那样,您必须编写代码来检测 XML 中的字符代码值,将它们解释为数值,然后构造字符串。您尚未提供 XML 实际外观的示例,因此很难更具体。
【解决方案2】:

如果进来的数据是这样的:

u00eb

然后,你可以自己解析十六进制字符串:

function insertText(parent, str) {
    if (str.charAt(0) == 'u') {
        str = String.fromCharCode(parseInt(str.slice(1), 16));
    }
    parent.appendChild(document.createTextNode(str));
}

工作演示:http://jsfiddle.net/jfriend00/pk5Bp/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2014-01-29
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多