在我的 javascript 中,如何解决“\u0026”、“&”和“&”之间的编码问题?

In my javascript, how can I fix this encoding issue between "\u0026", "&" and "&"?

我有一个 asp.net-mvc 网站,我的一个视图中有以下代码:

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 &amp; Bob

而不是乔 \u0026 鲍勃

我想获得一些建议,以最简洁的方式在浏览器源代码中获取完全相同的字符串,以便进行适当的比较。

在 JavaScript 中,“\u0026”完全等同于“&”,因此如果您要进行 javascript 比较,这会很好:

console.log("Joe \u0026 Bob" == "Joe & Bob"); // true

但如果您想在文本中表示此字符串,您肯定希望将其 HTML 编码为 &amp;

<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