HTML エンティティ エンコーダー / デコーダー
HTMLエンティティのエンコード・デコード。名前付き・10進数・16進数エンティティ対応。無料、ブラウザ内で処理。
- ブラウザ内で処理
- データはブラウザ外に出ません
- 無料 · 登録不要
WeChat でスキャンしてシェア
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。
変換の例
以下の出力は、このツールのエンコード処理と、ブラウザーと同じ HTML の解析規則で求めたものです。
郵便番号と注記記号
〒100-0001 ※要予約 を エンコード すると、次のようになります。
〒100-0001 ※要予約
〒 と ※ には名前付き参照がないため、10進数のコードポイントになります。ハイフンと数字は ASCII なのでそのまま残り、漢字も1文字ずつ数値参照になります。
価格表示をデコードする
古い CMS や商品データの書き出しでは、円記号が名前付き参照で保存されていることがあります。¥1,980(税込) を デコード すると次の結果になります。
¥1,980(税込)
セミコロンを付けない ¥1,980 も ¥1,980 に戻ります。ただし英語のステータスはセミコロンで終わる参照しか数えないため、この場合は Decoded — 0 entities converted. と表示されます。
かぎかっこを含む属性値
<a title="「新着」記事"> をエンコードすると、出力は次のとおりで、ステータスは Encoded — 10 characters converted. です。
<a title="「新着」記事">
二重引用符は " になるので、この結果は二重引用符で囲んだ属性値の中に入れても途中で切れません。「」は ASCII ではないため数値参照になりますが、HTML の構文上はエスケープしなくても問題のない文字です。
記号の名前を確かめる
→ … × をデコードすると → … × になります。名前がわからない記号は、文字そのものをエンコードして数値で確かめるのが確実です。
名前付き参照がない記号
HTML の名前付き文字参照は HTML 標準の一覧 にある名前だけが使えます。一覧はラテン文字や数学記号が中心で、日本語の文章によく出てくる記号の多くは入っていません。
| 文字 | 名前付き参照 | 10進数 |
|---|---|---|
| 〒 | なし | 〒 |
| ※ | なし | ※ |
| 、 | なし | 、 |
| 。 | なし | 。 |
| 「 | なし | 「 |
| ¥ | ¥ | ¥ |
| … | … | … |
UTF-8 で保存したページなら、これらの記号は文字のまま書けば十分です。W3C の解説「Using character escapes in markup and CSS」も、ページには UTF-8 を使い、普通の文字はエスケープせずに書くよう勧めています。必ずエスケープするのは <、>、& と、属性値の中で外側と同じ種類の引用符です。数値参照が役に立つのは、ページの文字コードで表せない文字を入れるときや、見えない文字をソースの上で区別したいときです。
デコードの仕組み
デコードは入力をブラウザー自身の HTML パーサーに渡し(textarea の innerHTML に入れて文字列として読み戻す)、文字参照だけを置き換えます。入力にタグがあっても要素は作られず、スクリプトも実行されません。
- 名前付き参照、10進数参照、16進数参照のどれでも読み取ります。
€からŸは HTML 標準の規定どおり Windows-1252 として解釈され、€は€になります。�やサロゲートの番号は U+FFFD になります。- 1回のデコードで1段階だけ戻します。
&lt;は<になり、<にはなりません。二重にエンコードされた文字列は、出力をもう一度「入力」に入れてデコードしてください。
制限
- エンコード結果は HTML 本文と引用符付きの属性値のためのものです。
<script>の中、インラインのイベントハンドラー、CSS、URL では別のエスケープ規則が必要です。JavaScript や JSON の文字列には文字列エスケープ / アンエスケープ、クエリーパラメーターには URL エンコード / デコードを使ってください。 - エンコードは
©のような名前付き参照を出力しません。ASCII 以外の文字はすべて10進数参照になり、絵文字も1文字につき1つの参照になります。 - 変換結果のステータスは、どの言語のページでも英語で表示されます。
よく使うHTMLエンティティ
<→<(小なり記号)>→>(大なり記号)&→&(アンパサンド)"→"(ダブルクォート)'→'(シングルクォート)©→©(著作権記号)
FAQ
HTMLエンティティとは何ですか?
HTMLエンティティ(文字参照)は、1つの文字を表すコードです。たとえば < を < と書くと、ブラウザーはタグの始まりとして読みません。© は © または © と書けます。
いつエンコードが必要ですか?XSS対策になりますか?
ユーザーが入力した文字列やコードの例を、HTML 本文や引用符で囲んだ属性値に入れるときに使います。そこで <、>、&、引用符をエスケープすると、表示崩れや HTML インジェクション(XSS)を防げます。ただし結果は HTML 用です。JavaScript の文字列、イベントハンドラー、CSS、URL にはそれぞれの文脈に合ったエスケープが必要です。
名前付き・10進数・16進数の参照は何が違いますか?
名前付き参照は HTML の名前一覧にある名前(&)、10進数参照は Unicode コードポイントの10進数(&)、16進数参照は16進数(&)を使います。どれも同じ文字を表し、デコードは3種類とも読み取ります。エンコードが名前を使うのは &、<、>、二重引用符だけで、それ以外は10進数参照を出力します。
データはサーバーに送信されますか?
いいえ。変換はブラウザーのタブの中で行い、入力した文字列をサーバーへ送ったりブラウザーのストレージに保存したりしません。ページのアクセス解析が記録するのは利用イベント(ツール名と切り替えた方向)だけで、文字列は含みません。
〒 や ※ に名前付き参照はありますか?
ありません。HTML 標準の名前付き文字参照の一覧に 〒(U+3012)と ※(U+203B)は含まれず、エンコードするとそれぞれ 〒 と ※ になります。円記号 ¥(U+00A5)には ¥ がありますが、このツールのエンコードは ¥ を出力します。