HTMLエンティティデコード

é や é を読めるテキストに戻します。名前付き参照と数値参照(10進数・16進数)に対応し、ブラウザ内で処理します。

すべてブラウザ内で動作します。アップロード、記録、保存は一切行いません。

エスケープ処理を一度多く通ったテキストは、é、é、& だらけになって届きます。このツールはそれを読み戻します。各エンティティはそれが表す文字になり、それ以外はそのまま残ります。

仕組み

名前付き参照はHTML 4.01の表で検索します。& から € まで252個の名前です。数値参照はコードポイントとして、10進数(é)または16進数(é)で読み、どちらの形式でも受け付けます。

参照でないものはすべて、単独のアンパサンドも含めてそのままコピーします。ページから取り出したテキストは中途半端にエスケープされていることがとても多く、迷い込んだ「&」1つのために入力全体を拒否しても誰の役にも立ちません。

例

ケース 入力 結果
名前付き参照 café café
同じ文字をコードポイントで café and café café and café
二重にエスケープされたテキストを1回デコード Tom & Jerry Tom & Jerry

よくある質問

デコード後も & が残っています。なぜですか?

二重にエスケープされていたからです。& は & にデコードされ、これは正しい動作です。1回のデコードで取り消せるエスケープは1回分です。もう一度通せば2回目も取り消せます。結果がまだエスケープされていること自体が、たいてい興味深い発見です。処理の流れのどこかで、すでにエスケープ済みの出力をさらにエスケープしているということだからです。

信頼できないテキストをデコードしても安全ですか?

ここでのデコードは安全です。マークアップとしては何も描画されず、結果はプレーンテキストの欄に表示されます。安全でないのは、デコードした結果をページに戻すことです。<script> は本物のタグにデコードされ、それこそがエスケープされていた理由のすべてです。

なぜ結果の   が普通のスペースではないのですか?

普通のスペースではないからです。U+00A0、ノーブレークスペースにデコードされます。見た目は同じでも動作が違い、そこで改行されず、検索や比較のコードのほとんどは別の文字として扱います。その違いが、追っているバグそのものであることがよくあります。

HTML5のエンティティ名には対応していますか?

HTML 4.01の252個の名前だけです。HTML5はさらに約2,000個を追加しており、そのほとんどは数学記号です。それらは推測せずにそのまま残します。数値参照はどの文字にも使えます。

知っておきたいこと

  • 処理はすべてブラウザ内で行われます。貼り付けた内容がアップロード、記録、保存されることはありません。

出典

開発者向けのすべてのツール