html将未转义的字符转换为转义

时间:2012-03-28 13:21:21

标签: html html-escape-characters

我在<pre>标记中呈现这行代码,在屏幕上显示为普通文字:

<img src="http://maps.googleapis.com/maps/api/staticmap?zoom=7&size=700x540&sensor=false$center=London, England&markers=London, England|Leicester, England|">

然而,它在多个浏览器中被误解为:

<img src="http://maps.googleapis.com/maps/api/staticmap?zoom=7&size=700x540&sensor=false¢er=London, England&markers=London, England|Leicester, England|">

由于分号符号的转义码是&cent;而不是&cent,我无法理解为什么会发生这种情况,似乎没有办法阻止它。有人可以帮忙吗?

另外,我的doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果它有任何区别,这行代码将通过Javascript的innerHTML方法添加到文档中。

1 个答案:

答案 0 :(得分:1)

仅仅因为<pre>中的某些内容并不意味着你不必逃避它(doctype在这里没有区别)。如果您希望&显示在屏幕上,&amp;的任何实例都应使用实体&。你有时可以摆脱它,但这只是浏览器的宽容 - 你不应该利用它。如果识别出一个实体,浏览器可能会尝试转换为实体,即使分号丢失(再次原谅)。

整个事情(来源)应该是:

  

<pre>&lt;img src=&quot;http://maps.googleapis.com/maps/api/staticmap?zoom=7&amp;size=700x540&amp;sensor=false&amp;center=London, England&amp;markers=London, England|Leicester, England|&quot;&gt;</pre>

顺便说一下,对于属性值也是如此,例如href。人们常常“懒惰”而不是逃避查询字符串中的&符号,但你真的应该这样做。