ブログ
日本語

HTMLエスケープ — HTMLエンティティのエンコード・デコード

特殊文字や非ASCII文字のHTMLエンティティをエンコード・デコード

ブラウザー内で処理・アップロード不要

HTMLエンティティとは

HTMLでは < や & などの文字に特別な意味があるため、文字どおりに表示するには &lt; や &amp; のようなエンティティで書きます。このツールはテキストをエンティティに、エンティティを文字に変換します。

使い方

  1. エンコードかデコードを選びます。
  2. エンコードする場合は範囲を選びます。必須の5文字だけか、非ASCII文字すべてを数値参照にするかです。
  3. テキストを貼り付けると、すぐに結果が表示されます。
  4. 結果をコピーするか、「出力を入力に使う」を押して往復変換を確認します。

仕組み

  • 必須の5文字のみ:& は &amp;、< は &lt;、> は &gt;、" は &quot;、' は &#39; になります。
  • 非ASCII文字すべて:上の5文字に加え、コードポイントが128以上のすべての文字を10進の参照にします(éは &#233;)。絵文字はUTF-16の2つの半分ではなく、1つのコードポイントとして扱います。
  • デコード:名前付き参照、10進参照(&#65;)、16進参照(&#x41;)を1回の処理で解決するため、&amp;lt; は &lt; になり、それ以上は変換されません。
  • 名前付き参照は内蔵の約50件の表(amp、lt、gt、quot、apos、nbsp、copy、euro、hellipなど)に基づきます。表にない名前はそのまま残ります。
  • 0、サロゲートの範囲、Unicodeの上限を超える値の数値参照は、HTML標準どおり置換文字U+FFFDになります。

例

入力 モード 結果
<a href="x"> 必須の5文字のみ &lt;a href=&quot;x&quot;&gt;
é© 非ASCII文字すべて &#233;&#169;
👍 非ASCII文字すべて &#128077;
&copy; &#x1F44D; デコード © 👍

よくある質問

なぜテキストをHTMLエンティティにするのですか?

そのままページに入れたテキストでは、<のような文字がタグとして解釈されます。必須の文字をエンティティにすると文字どおりに表示され、スクリプトの埋め込みを防ぐ助けにもなります。ただし、サーバー側での適切な出力エスケープの代わりにはなりません。

必須の5文字とはどれですか?

アンパサンド、小なり、大なり、ダブルクォート、シングルクォートです。それぞれ &amp; &lt; &gt; &quot; &#39; になります。

日本語やアクセント付きの文字もエンコードが必要ですか?

文書がUTF-8なら必要ありません。エンコーディングが不確かな場所や、ASCIIしか受け付けないシステムにテキストを渡す場合だけ、非ASCII文字すべてのモードを使ってください。

デコードされないエンティティがあります。

HTMLには2,000を超える名前付きエンティティが定義されています。このツールはよく使われる約50の名前とすべての数値参照に対応しており、知らない名前はそのまま残します。

ほしいツールはありますか?