将HTML实体添加到document.createTextNode中

3
假设我创建了一个字符串: str = '\\' + 'u00eb'。如果我使用document.createTextNode(str),它将给我\u00eb而不是ë。不要问我为什么,但我不能把我的字符串定义为str = '\u00eb'。把字符串定义为str = 'ë''ë'也没有帮助。有没有什么建议可以打印'ë'

2
为什么你不能将它定义为 str = '\u00eb' - Musa
str = '\' + 'u00eb' 是语法错误。 - Pointy
我的字符串可能是像'This is a tëst'这样的东西,我现在使用类似str = eval('"' + str + '"')的方法将它们转换了。我只需要确保'"'不是原始字符串的一部分。 - Spifff
我不明白。如果这是你的字符串,它已经有了正确的Unicode字符,所以不需要转义序列。 - user2736012
我应该更具体地说明:我的字符串'This is a tëst'将被接收为'This is a t\u00ebst'。 - Spifff
显示剩余7条评论
2个回答

1
如果传入的数据看起来像这样:

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/


1
如何?
var str = String.fromCharCode(0xeb);

如果我要翻译的总是0xeb,那应该可以工作。不幸的是,str可能包含各种字符... 对于我的问题表述不够清晰,抱歉。 - Spifff
@PieterN 嗯,正如我在评论中所说的,您需要编写代码来检测XML中的字符代码值,将其解释为数字值,然后构造字符串。由于您没有提供实际XML的示例,因此很难更具体地说明。 - Pointy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接