JavaScript htmlentities法语

时间:2011-02-04 13:38:56

标签: javascript .net jquery model-view-controller unicode

我有一个.NET MVC页面,其中包含每个项目的列表 <%: %>中的rel编码说明。 我希望能够使用包含我的搜索查询的rel搜索所有项目。

其中一个字段的值为htmlentities rel='D&eacute;coration'

我在搜索框中输入“Décoration”,让jQuery搜索所有具有'rel'属性的元素,该属性包含(indexOf!= -1)该值:

没有结果!

为什么呢?因为Décoration != D&eacute;coration

比较这两者的最佳解决方案是什么? (必须适用于所有特殊重音字符,而不仅仅是&eacute;

P.S。 (我尝试了两边的escape / unescape,也尝试了将它附加到div然后将其作为文本读取,这取代了危险的东西,但不替换é(它不必因为它在utf中有效) -8无论如何))

3 个答案:

答案 0 :(得分:2)

由于&eacute;等是html实体,您可以使用乱码字符串设置临时div的html内容,并使用元素的文本内容来检索已解码的字符串。浏览器将为您完成解码工作。

使用jQuery:

function searchInRel(needle) {
    return $('[rel]').filter(function(i,e) {
        var decodedText = $('<div/>').html(e.attr('rel')).text();
        return (decodedText.indexOf(needle) != -1);
    };
}

仅使用DOM:

function decodeEntities(text) {
    var tempDiv = document.getElementById('tempDiv');
    tempDiv.innerHTML = text;
    return tempDiv.textContent;
}

答案 1 :(得分:1)

如果您使用UTF-8编码提供网页,则无需为所有重音字符使用实体。问题解决了。

答案 2 :(得分:0)

您可以解码html实体。 只需从HERE

复制两个javascript方法即可
var decoded = 'Décoration';
var entity = html_entity_decode('D&eacute;coration');
console.log(decoded == entity);