雷克雅未克被写入有奇怪角色的div

时间:2012-09-19 10:22:01

标签: javascript jquery

我有以下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" />

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

@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>
   }
}

现在,当我有“伦敦”这样的文字时,这段代码效果很好,但是当我有“雷克雅未克”时,这段代码写成'Reykjav&#237;k'。我怎样才能写出正确的文字?

1 个答案:

答案 0 :(得分: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();

来源:Unescape HTML entities in Javascript?