特殊文字をjQueryで取得するときスペースの場合は注意が必要!

jQueryで特殊文字を取得するとき、スペース以外の特殊文字はパース後の表記として認識されますが、スペースの特殊文字は一部が特殊文字コードのままとして認識されるようです。その場合をメモとして残します。

特殊文字として認識される場合

特殊文字として認識される場合を検証するために、当サイトのヘッダーにappendしたものを$().htmlで取得して検証しました。

// &マークは便宜上全角にしています。

// ヘッダーに、スペースの特殊文字をappend
//      
$("#header").append("<div id='aaa'>&nbsp;&ensp;&emsp;&thinsp;&#160;</div>");

// html();で取得した場合、&nbsp; &#160; が &ebsp; として解釈される
$("#aaa").html();
// "&nbsp;   &nbsp;"

// text();で取得した場合、特殊文字はパース後として解釈されている
$("#aaa").text();
// "     "

以上の結果を踏まえるると、以下のようになります。 html();で取得した場合、&nbsp; &#160; が &ebsp; として解釈される text();で取得した場合、すべてパースされて解釈される。

というわけで、一文字ずつ処理する必要がある場合、特殊文字対策として&ebsp;をエスケープするような処理が必要となります。 とはいえ、正規表現で&から;までをエスケープするように処理すればどんな特殊文字があっても対応できると思いますので、そのように実装する方が無難ですね。

人気記事すべて表示

WEBすべて表示