HTML エンティティのデコード — HTML エンティティをプレーンテキストにデコード
&、<、A、A などの HTML エンティティを元の文字にデコードします。完全にブラウザ内で動作します。アップロードや制限はありません。
HTML エンティティが存在する理由は 3 つあります。HTML マークアップで特別な意味を持つ文字(アンパサンドや山括弧)、標準的なキーボードにない文字(著作権表示、em ダッシュ、スマートクォート)、そして視覚的に混同しやすい文字(ノーブレークスペース、ゼロ幅接合子)です。ブラウザが HTML を提供するとき、エンティティは自動的にデコードされます。ユーザは © を見ず、著作権記号を見ます。HTML がエンティティを理解しないツール(CSV インポート、VARCHAR 制約のあるデータベースカラム、検索インデックス)によって処理される場合、エンティティは生テキストとして現れ、ドキュメントが読めなくなります。エンティティを文字に戻すデコードが解決策です。
エンティティデコードで「あまり自明ではない」のは、名前付きと数値の区別です。名前付きエンティティ(&、<、©)は W3C が管理する閉じたリストであり、HTML5 では約 2,000 項目があり、一般的ケースと Latin-1 時代からのレガシーエンティティのロングテールをカバーしています。数値エンティティ(A、A)は普遍的であり、すべての Unicode コードポイントに対応する数値エンティティが存在し、Unicode 15.0 以降で追加された文字も含まれます。HTML5 仕様は実際、ブラウザが特定の文脈でのみ名前付きエンティティを認識することを要求しています。数値エンティティはどこでも認識されます。デコードにおいて、本ツールは両方の形式を受け取り、均等に適用します。
最後に受け渡しについてまとめます。入力が HTML コンテンツ(CMS エクスポート、メール本文、スクレイピングしたページ)であれば、それをデコーダーに通すことが、さらなる処理の前段階として正しい選択です。出力先がデータベースや検索インデックスの場合、通常はデコードが必要です。多くのデータベースは文字をそのまま保存し、多くの検索エンジンはデコードされた形式でトークン化します。出力先が別の HTML ページであれば、デコードは不要です。ブラウザがレンダリング時にデコードします。
使い方
エンティティエンコードされたテキストを貼り付ける
テキストを入力エリアにドロップします。名前付きエンティティ(&、<、©)と数値エンティティ(A、A)の両方を同じパスでデコードします。
デコード結果を確認する
入力に応じて出力が更新されます。数値エンティティは 10 進(A)または 16 進(A)のどちらでもよく、パーサーは `#` の後の `x` プレフィックスに基づいて形式を自動検出します。
デコード結果をコピーする
プレーンテキストの結果をクリップボードにコピーするか、.txt ファイルとしてダウンロードできます。デコーダーはエンティティ以外の文字をそのまま残すので、出力はエンティティ表記を除いたソースそのものになります。
よくある質問
名前付きエンティティと数値エンティティの違いは何ですか?
名前付きエンティティはニーモニックな略語を使います(`&` がアンパサンド、`<` が小なり、`©` が著作権表示)。数値エンティティはコードポイントを使います(`A` が 10 進で「A」、`A` が 16 進で「A」)。HTML 5 は 2,000 以上の名前付きエンティティを定義しており、数値エンティティはすべての Unicode コードポイントをカバーします。
なぜ同じ文字に 10 進と 16 進の 2 形式があるのですか?
数値エンティティは 10 進(基数 10、`A`)または 16 進(基数 16、`A)のいずれかを使用できます。両方は同じ文字にデコードされます。10 進は HTML 2.0 からの元の形式であり、16 進は後で追加され、絵文字のような高いコードポイントではよりコンパクトです(`😀` vs `😀`)。
デコーダーは HTML5 の名前付きエンティティを扱えますか?
はい。パーサーは HTML5 の名前付き文字参照リストに従い、`Ä` のようなレガシーのものや ` ` のような現代のものも含む 2,125 の名前付きエンティティをカバーします。完全な W3C リストは内部の `he` ライブラリにエンコードされています。
不正な形式のエンティティはどうなりますか?
不正な形式のエンティティ(セミコロンの欠落、不明な名前、壊れた数値)は文字通りそのまま通過します。本ツールはそれらを暗黙的に削除せず、出力は `¬anentity;` を `¬anentity;` のまま保持するので、エントリを暗黙的に破損させるのではなく、悪い入力を発見できます。
二重エンコードされたテキストをデコードしますか?
いいえ。デコーダーは 1 パスだけ実行します。`&amp;` のような二重エンコードされたテキストは `&`(2 段階)にはならず、`&`(1 段階)にデコードされます。複数の層のエンコードを剥がす必要がある場合は、出力をもう一度デコーダーにかけてください。
制限事項
- 1 パスのみデコーダーは入力に対して 1 パスのみ実行します。二重または三重にエンコードされたテキストは部分的にデコードされ、`&amp;` は `&` にはならず `&` になります。複数の層を剥がす必要がある場合は出力を再度ツールに通してください。
- 不明なエンティティは削除されません不正または不明なエンティティは文字通りそのまま通過します。これは安全な動作です。暗黙的に削除するとエラーが隠れてしまうからです。不正な入力が疑われる場合は出力に `&` の残骸がないか点検してください。
- 属性デコードには非対応HTML 属性のデコード(例:シングルクォート属性での `'` の扱い)は、コンテンツデコードとは若干異なる規則に従います。本ツールはコンテンツ規則を使用します。属性モードのデコードが必要な場合は、より厳密なパーサーで後処理してください。
プラットフォーム別の注意点
- macOS
- TextEdit は貼り付け時にエンティティをデコードしません。ブラウザツールは、CMS やメール、ドキュメンテーションページからコピーした HTML を、不要な `&` アーティファクトのない読みやすいプレーンテキストにするのに適しています。
- Windows
- Notepad や Notepad++ はエンティティを自動デコードしません。ブラウザツールは、メール、チャット、コンテンツ管理システムからコピーした HTML フラグメントを読みやすいプレーンテキストにするのに適しています。
- Linux
- コマンドラインで作業する場合、`sed 's/&#\([0-9]\+\);/\1/g'` が 10 進エンティティを扱えます。ブラウザツールは、CMS、RSS フィード、`sed` では扱いにくい API レスポンスからの名前付きと数値が混在するエンティティに適しています。
- Web
- 完全にクライアントサイドで動作します。ページの読み込み後はオフラインでも動作します。コマンドラインツールが利用できない制限のある環境で HTML スニペットをデコードする際に便利です。