JavaScript会自动转换一些特殊字符

时间:2012-11-22 13:56:18

标签: javascript jquery character-encoding

我需要使用与位置相关的JS提取HTML子串。我存储HTML编码的特殊字符。

例如:

HTML

<div id="test"><p>l&ouml;sen &amp; gr&uuml;&szlig;en</p></div>​

文字

lösen & grüßen

我的问题在于JS部分,例如当我尝试提取片段时 ,其{:1}}的HTML依赖起始位置和3块内9的结束位置。 JS似乎在内部转换了一些特殊字符,因此从<div>3的计数被错误地解释为“9”而不是“lösen”。 l&ouml;等其他特殊字符不受此影响。

所以我的问题是,如果有人知道为什么JS会以这种方式行事?正在转换&amp;&auml;等字符,而&ouml;&amp;等字符是普通的。有没有可能避免这种转变?

我已经设置了一个小提琴来证明这一点:JSFiddle

感谢您的帮助!

修改

也许我已经解释过有点混乱,对不起。我想要的是HTML:

&nbsp;

除HTML-Tags外,每个特殊字符都应该是未转换的。就像上面的HTML一样。

但是JS会自动将<p>l&ouml;sen &amp; gr&uuml;&szlig;en</p>&ouml;转换为&uuml;ö,这是我需要避免的。

2 个答案:

答案 0 :(得分:2)

这是因为浏览器(而不是JavaScript)将不需要在HTML中转义的实体转换为各自的Unicode字符(例如,它跳过&amp;&lt;&gt; )。

因此,当您检查.innerHTML时,它不再包含原始页面源中的确切内容;你可以改变这个过程,但它涉及到完整的角色<->实体对映射,这是不切实际的。

答案 1 :(得分:0)

如果我理解正确,那么尝试在目标元素上使用innerHTML或.html('你的html代码')进行jQuery