特殊な HTML エンティティを含む文字列をデコードする正しい方法は何ですか? [重複] 質問する

特殊な HTML エンティティを含む文字列をデコードする正しい方法は何ですか? [重複] 質問する

サービス リクエストから次のような JSON が返されたとします。

{
    "message": "We're unable to complete your request at this time."
}

なぜそのアポストロフィがそのようにエンコードされているのかはわかりません( ')。私が知っているのは、それをデコードしたいということだけです。

ここで、jQuery を使用した 1 つのアプローチを思いつきました。

function decodeHtml(html) {
    return $('<div>').html(html).text();
}

しかし、それは(非常に)ハッキーなようです。もっと良い方法は何でしょうか?「正しい」方法はあるのでしょうか?

ベストアンサー1

これは HTML 文字をデコードする私のお気に入りの方法です。このコードを使用する利点は、タグも保持されることです。

function decodeHtml(html) {
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    return txt.value;
}

例:http://jsfiddle.net/k65s3/

入力:

Entity:&nbsp;Bad attempt at XSS:<script>alert('new\nline?')</script><br>

出力:

Entity: Bad attempt at XSS:<script>alert('new\nline?')</script><br>

おすすめ記事