为什么有时网站上会显示“&”?

时间:2018-07-11 14:39:10

标签: jquery asp.net-mvc special-characters

我已经使用Asp.net MVC开发了我的网站。我面临一些奇怪的问题,例如角色和显示为“&amp”。我试图用&使用jquery替换。但这仍然是造成的。请给我解决方案,我对此没有找到解决方案。

//添加代码:

$ber = '';
foreach ($_POST['ber'] as $value) {
    $ber .= "$value. ', '"
}

如果childsdata.Results [j] .Name的值为'process&Governance',则显示为'process“&amp” Governance'。

2 个答案:

答案 0 :(得分:0)

Pete在这里是100%正确

  

如果您未在变量中使用@ Html.Raw()或html的mvc html字符串,则所有html都将显示为文本而不是html

基本上,您是从数据库中提取字符串,并且出于安全原因(例如避免XSS攻击),您的框架是对所有字符进行html编码。

答案 1 :(得分:0)

HTML使用&符号(&)来转义其他在HTML中具有含义的符号。例如,如果您希望您的网站说1 < 2,那么您就需要用HTML代码说1 &lt; 2,因为&lt;是您真正希望<出现时的代码。 (通常将<解释为打开HTML标签。)

但是,这意味着任何时候&出现在HTML中时,解析/渲染引擎都会寻找跟随它的字符,作为某种代码。因此&本身需要转义。 Ben & Jerry's必须在HTML中呈现为Ben &amp; Jerry's才能正确显示在浏览器中。 (有时,如果“&”号后面的字符不是有效的代码,浏览器会巧妙地弄乱一些内容,但是最明智的做法是始终在要放入的上下文中转义内容。

大多数帮助呈现HTML的库(如Razor或JQuery)将自动转义值。问题通常在两次逃逸时出现。可能已经将值设置为Ben &amp; Jerry's,因为您希望将其输出为HTML,然后使用jQuery('.something').text(...)将元素的文本设置为该值。然后,您将得到Ben &amp;amp; Jerry's,它将以HTML Ben &amp; Jerry's的形式呈现。

因此,您需要确保仅在将转义插入有意义的代码上下文中时才对它们进行转义。