我有一个 asp.net-mvc 网站,并且我的 View 之一中有以下代码:
var teams = <%= new JavaScriptSerializer().Serialize(Model.Names) %>;
Model.Names 是一个字符串数组和名称之一,一个团队的名称为“Joe & Bob”,它在 html 中显示为:
"Joe \u0026 Bob"
即使它在浏览器中显示为“Joe & Bob”
问题是我有另一行代码试图与“Joe & Bob”进行比较,但找不到它。当我查看它的代码时,它为什么会失败,它只是吐出一个像这样的变量
"<%= Model.Name %>",
在浏览器源代码中我看到
"Joe & Bob"
(而不是乔\u0026鲍勃)
我尝试这样做
<%=Html.Encode(Model.Name); %>
所以我可以进行适当的比较,但我得到:
Joe & Bob
代替乔\u0026鲍勃
我想获得一些关于在浏览器源中获取完全相同的字符串的最简洁方法的建议,以便我可以进行正确的比较。
最佳答案
在 JavaScript 中,“\u0026”完全等同于“&”,因此如果您正在进行 JavaScript 比较,这会很好地工作:
console.log("Joe \u0026 Bob" == "Joe & Bob"); // true
但是如果您想在文本中表示该字符串,您肯定希望将其 HTML 编码为 &
。
<span class="name"><%=Html.Encode(Model.Name)%></name>
如果这样做,那么就 JavaScript 而言,DOM 元素的文本值仍应为“Joe & Bob”:
console.log($('.name').text()); // "Joe & Bob"
console.log($('.name').text() == "Joe & Bob"); // true
console.log($('.name').text() == "Joe \u0026 Bob"); // true
关于javascript - 在我的javascript中,如何解决 "\u0026"、 "&"和 "&"之间的编码问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031892/