HttpSessionState返回HTML实体而不是字符

HttpSessionState returns HTML entity instead of character

本文关键字:字符 实体 返回 HTML HttpSessionState      更新时间:2023-09-26

JavaScript函数试图使用存储在HttpSessionState中的字符串值;字符串值还包含瑞典语字符(例如,考虑单词MJÖLBY)。问题是特殊字符作为HTML实体ö而不是真实字符出现。我试图通过使用编码来解决这个问题,但不幸的是,它没有帮助,编码的结果是未定义。是否知道如何传递Ö而不是实体代码ö,以便在JavaScript中使用以及在浏览器上发布之前使用?

更新:Session_Start()中,字符串由Session["City"] = "MJÖLBY";设置,然后在JavaScript中,值由var city = @Session["City"].ToString(); 读取

Razor中的@参数执行HTML编码。所以Ö被转换成它的HTML实体是正常的。如果您想实现这种用途,可以使用Html.Raw方法。还要确保您对字符串进行了正确的JSON编码,否则如果会话中的值为例如MJÖ'LBY:,则会得到非常糟糕的javascript
<script type="text/javascript">
    var city = @Html.Raw(Json.Encode(Session["City"]));
</script>