HTMLエスケープ・エスケープ解除ツールについて
HTMLでは「<」「>」「&」などの記号が、タグや文字参照の目印として特別な意味を持ちます。そのため、HTMLのソースコードや記号を含む文章をそのままWebページに書くと、タグとして解釈されて表示が崩れたり、文字が消えたりします。
このツールは、これらの記号を「<」のような文字参照に置き換えるエスケープと、文字参照を元の文字に戻すエスケープ解除(アンエスケープ)を行います。ブログやマニュアルにHTMLやプログラムのコードを載せたいときや、エスケープされた文字列を読める形に戻したいときに便利です。
変換はすべてお使いのブラウザ内で行われ、入力したテキストがサーバーに送信されることはありません。
使い方
- ツール上部で「エスケープ」か「エスケープ解除」を選びます。
- 入力欄にテキストを入力するか、貼り付けます。
- 入力と同時に「変換結果」に結果が表示されます。「コピー」ボタンで結果をコピーできます。
オプションを切り替えると、結果もすぐに更新されます。選んだモードとオプションはブラウザに保存され、次回も引き継がれます。
エスケープで変換される文字
| 文字 | 変換後 | 説明 |
|---|---|---|
& | & | アンパサンド。文字参照の始まりを表します |
< | < | 小なり記号。タグの始まりを表します |
> | > | 大なり記号。タグの終わりを表します |
" | " | ダブルクォート。属性値を囲みます |
' | ' | シングルクォート。属性値を囲みます |
「"」と「'」は、オプション「引用符(" と ')も変換する」をオフにすると変換しません。value="…" のような属性値に入れる文字列は、オンのまま変換してください。
オプションの説明
エスケープ
- 引用符(" と ')も変換する
- 「
"」を「"」に、「'」を「'」に変換します。初期状態ではオンです。 - 名前付き文字参照を使う
- 「
©」→「©」、ノーブレークスペース→「 」のように、名前が決められている文字を名前付きの文字参照に変換します。使う名前は、古いブラウザでも使えるHTML 4.01の名前だけです。ノーブレークスペースなどの見えない文字を確かめたいときにも役立ちます。 - 日本語・絵文字など
- 「数値文字参照(10進数)」または「数値文字参照(16進数)」を選ぶと、ASCII以外の文字(日本語、全角記号、絵文字など)を数値文字参照に変換します。たとえば「あ」は、10進数では「
あ」、16進数では「あ」になります。文字コードの違いによる文字化けを避けたいときに使います。「名前付き文字参照を使う」と組み合わせると、名前がある文字は名前で書きます。
エスケープ解除
「<」「…」のような名前付き文字参照(HTMLの仕様で決められたすべての名前に対応)と、「©」「©」のような数値文字参照を元の文字に戻します。変換の規則は、ブラウザがHTMLの本文を読むときと同じです。
- 「;」で終わる文字参照だけを変換する
- オフのときは、HTMLの本文と同じ規則で「
©」のような「;」の無い一部の文字参照も変換します。URL(?id=1©=2など)を含む文字列で意図しない変換が起きるときはオンにしてください。 - 二重エスケープもすべて解除する
- 「
&lt;」のように何度もエスケープされた文字列を、変化がなくなるまで繰り返し解除します。この例では「<」になります。
よくある質問
- Q. なぜHTMLエスケープが必要なのですか?
- A. 利用者が入力した文字列や外部から取得した文字列をそのままHTMLに埋め込むと、「
<script>」などがタグとして動作し、表示崩れやクロスサイトスクリプティング(XSS)の原因になります。埋め込む前にエスケープすれば、記号をただの文字として安全に表示できます。 - Q. PHPのhtmlspecialcharsと同じ結果になりますか?
- A. 初期設定(引用符も変換する:オン)では、PHPの
htmlspecialchars($str, ENT_QUOTES)と同じ文字を変換します。違いは「'」の書き方だけで、PHPは「'」、このツールは「'」を出力します。どちらも同じ意味です。 - Q. 「'」と「'」の違いは何ですか?
- A. どちらも「
'」を表しますが、「'」はHTML 4.01では定義されていません。このツールのエスケープでは、どの環境でも使える「'」を使います。エスケープ解除では、どちらも「'」に戻します。 - Q. エスケープ解除で「€」が「€」になるのはなぜですか?
- A. HTMLの仕様では、128~159番の数値文字参照は歴史的な理由からWindows-1252の文字として扱われます。このツールはブラウザと同じ規則で変換するため、「
€」は「€」になります。また、「�」などの無効な番号は「�」(U+FFFD)になります。
ご利用上の注意
- エスケープを解除した結果には、そのまま動作するHTMLやスクリプトが含まれることがあります。信頼できない文字列を解除して、Webページに埋め込まないでください。
- 入力したテキストは保存されません。ページを閉じたり再読み込みしたりすると消えます。