0

我有以下html

<div class="ui-widget" style="margin-top: 1em; font-family: Arial">
   Selected:
<div id="locationLog" style="height: 100px; width: 200px; overflow: auto;" class="ui-widget-content"></div>
</div>

<input type="hidden" name="HiddenLocations" id="HiddenLocation" />

然后,我有一些代码在每次页面加载时运行,以将一些文本添加到locationLogdiv 中。

@if (Model.SearchCriteria != null && Model.SearchCriteria.Locations != null)
{
   foreach (string t in @Model.SearchCriteria.Locations)
   {
      <script type="text/javascript">
         $("<div/>").text('@t').appendTo("#locationLog");
         $("<br/>").text("").appendTo("#locationLog");
         $("#locationLog").scrollTop(0);

         selectedLocations = $('#locationLog' + ' div').map(function () {
            return $(this).text();
         }).get();

         $('input[name=HiddenLocations]').val(selectedLocations); 
      </script>
   }
}

现在,当我有“London”之类的文本时,这段代码运行良好,但是当我有“Reykjavík”时,这个代码会写成“ Reykjav&#237;k”。我怎样才能写出正确的文字?

4

1 回答 1

1

尝试在文档中声明 utf-8 字符集

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

编辑: 试试这个:

function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}

并在这里使用它:

selectedLocations = $('#locationLog' + ' div').map(function () {
   return htmlDecode($(this).text());
}).get();

资料来源:在 Javascript 中取消转义 HTML 实体?

于 2012-09-19T10:26:11.853 回答