Webサイトを作っていると、「なんで<や&がちゃんと表示されないの?」って思うことありますよね。
この記事では、そんなときに役立つHTMLエンコードについて、わかりやすく説明していきます。
HTMLエンコードのしくみや使い方をしっかり知れば、記号のトラブルやセキュリティの不安を防げるようになりますので、Web制作がもっと安心で楽しくなります。
これからWebページを作ろうとしている人にも、すでに作っている人にも役立つ内容になっていますので、ぜひ最後まで読んで参考にしてください。
HTMLエンコードとは何か?基本をわかりやすく解説

HTMLエンコードの定義と仕組み
HTMLエンコードとは、HTMLの中で使う特別な記号を安全に表示させるために、別の書き方に変える方法のことです。
例えば「&」や「<」などの記号は、そのまま書くとHTMLとして動いてしまうため、特別なコードに置き換える必要があります。
以下は、よく使われるHTMLエンコードの仕組みです。
- & →
& - < →
< - > →
> - ” →
" - ‘ →
'
このように、記号を特別な文字列に変えることで、HTML文書の中でも安全に表示できるようになります。
特にWebページでは、ユーザーが入力した内容を画面にそのまま表示することも多いため、エンコード処理はとても重要です。
なぜHTMLエンコードが必要なのか
HTMLエンコードが必要な理由は、Webページが「HTML」という特別なルールでできているからです。
このルールでは、特定の記号に特別な意味があるため、そのまま表示すると誤解されてしまうことがあります。
次のような理由でHTMLエンコードは必要です。
- 表示の崩れを防ぐため
- 悪意あるコードの実行を防ぐため
- フォームからの入力値を安全に使うため
- 文字化けを防止するため
- HTML構造を正しく保つため
このように、HTMLエンコードは安全性を保ちながら、ユーザーに正しく情報を見せるための大切な処理になります。
どんなWebサイトでも使うものなので、基本として覚えておきましょう。
HTMLとテキストの違い
HTMLとテキストの違いを理解することは、エンコードを正しく使う上でとても大事です。
HTMLは「ルールに従った構造のある言語」で、テキストは「ただの文字の並び」だと考えるとわかりやすいです。
例えば、以下のような違いがあります。
- HTMLでは
<h1>や<p>などのタグを使って意味を表す - テキストにはタグなどの意味はない
- HTMLはブラウザで解釈されて画面に表示される
- テキストはそのままの文字として表示される
- HTMLでは記号に特別な意味がある
この違いを理解することで、どこにHTMLエンコードが必要なのかが見えてきます。
Web上でテキストを扱うときは「これはHTMLとして解釈されるか」を常に意識することが大切です。
エンコードとデコードの違い
エンコードとデコードは、お互い逆の意味を持つ言葉です。
どちらもとても重要なので、しっかり区別して覚えておきましょう。
簡単に言うと、次のような違いがあります。
- エンコード:記号や文字を別の表現に変えること
- デコード:エンコードされた文字を元に戻すこと
例えば、<というエンコードは、「<」という記号をHTMLの中でも表示できるように変えた形です。
これをデコードすると、元の「<」に戻ります。
つまり、エンコードは「安全にするための変換」で、デコードは「元に戻す変換」です。
この2つをセットで覚えると、Web制作でのミスも防げます。
よく使われるHTMLエンコードの例
実際にどんな場面でHTMLエンコードが使われているのかを知ることは、理解を深めるのに役立ちます。
特に次のような記号は、HTMLエンコードがよく使われます。
- 「<」 →
< - 「>」 →
> - 「&」 →
& - 「”」 →
" - 「’」 →
'
たとえば、Webページに「5 < 10」と表示したいとき、「<」をエンコードしないとHTMLでは正しく表示されません。
このように記号を正しく見せたいときには、必ずHTMLエンコードが必要になります。
未エンコードによるトラブル例
HTMLエンコードをしないと、いろいろなトラブルが起こります。
特にWebサイトではセキュリティ上の問題や、表示の崩れなどが発生しやすくなります。
以下は、未エンコードによって起こる代表的なトラブルです。
- コメント欄に入力されたコードが勝手に実行される
- レイアウトが崩れて正しく表示されない
- ユーザーの情報が第三者に漏れる
- システムがエラーを出して動かなくなる
- 検索エンジンに正しく情報が伝わらない
これらはすべて、エンコードをすれば防げる問題です。
とくにフォームや入力欄があるページでは、HTMLエンコードは必須といえます。
Web制作におけるHTMLエンコードの役割
Web制作の現場では、HTMLエンコードはとても重要な役割を持っています。
特にユーザーが入力したデータをWeb上に安全に表示することが多いため、必ずエンコード処理が必要になります。
主な役割は次のとおりです。
- ユーザー入力の安全な表示
- HTML構造の保護
- JavaScriptとの安全な連携
- XSSなどの攻撃対策
- 誤表示や文字化けの防止
HTMLエンコードは見た目だけでなく、Webサイト全体の安全性を守るためにも欠かせない処理です。
開発の初期からしっかり取り入れることが、安心できるWeb制作につながります。
HTMLエンティティ一覧と使い方

記号に関するHTMLエンティティ
HTMLの中で「記号」を表示するには、HTMLエンティティという特別な表記が必要です。
記号の中には、HTMLの構文として使われているものがあるため、直接書くと正しく表示されなかったり、レイアウトが崩れたりすることがあります。
以下は、よく使われる記号とそのHTMLエンティティの例です。
- < →
< - > →
> - & →
& - ” →
" - ‘ →
'
このように、記号を安全に画面に表示するためには、HTMLエンティティに変換する必要があるのです。
特に、ユーザーが入力したコメントや投稿内容をそのまま表示する場面では、この変換がとても重要になります。
文字に関するHTMLエンティティ
記号だけでなく、特定の文字もHTMLエンティティで表すことができます。
特にアクセントがある外国語の文字や特殊なアルファベットなどは、HTMLで安全に表示させるためにエンティティを使います。
次のような文字が該当します。
- é →
é - ñ →
ñ - ö →
ö - ç →
ç - Å →
Å
これらの文字は、通常のキーボード入力では入力しにくく、また文字コードによっては正しく表示されないこともあります。
HTMLエンティティを使うことで、どの環境でも安定して表示されるようになるのが大きなメリットです。
スペースや改行に関するHTMLエンティティ
Webページでは、普通のスペースや改行がそのまま表示されないことがあります。
これは、HTMLのルールでは連続したスペースや改行を1つにまとめて表示するようになっているからです。
そのため、スペースや改行もエンティティを使って明示的に表現することがよくあります。
- スペース →
- 改行 →
<br>(タグ) - タブのような空白 →
や
このように、空白や改行も意図通りに表示したいときは、HTMLエンティティやタグを使う必要があります。
文章の見た目を整えるためにも、正しい使い方を覚えましょう。
ISO文字コードとHTMLエンティティの関係
HTMLエンティティは、文字コードと密接な関係があります。
中でもISO 8859-1という文字コードは、エンティティの元になっていることが多く、これを知っておくと文字化けの原因も理解しやすくなります。
以下のポイントでその関係を整理してみましょう。
- HTMLエンティティは主にISO 8859-1(Latin-1)に基づいて定義されている
- このコードでは256個の文字に番号が振られている
- HTMLではこれらの番号を使って、
のように表示できる - 現代のWebではUTF-8が主流だが、古いエンティティも多く使われている
つまり、HTMLエンティティは文字コードの「別の読み方」として成り立っていると言えます。
知っておくと、文字化けや互換性の問題を防ぐ手助けになります。
ブラウザでの表示とエンティティの違い
同じ文字でも、HTMLエンティティを使う場合と使わない場合では、ブラウザでの見え方が違ってくることがあります。
これは、ブラウザが「これは記号だ」「これはHTMLだ」と解釈するルールがあるからです。
例えば、以下のようなケースでは違いが出ます。
- 「<div>」と表示したい場合 →
<div>と書く必要がある - そのまま
と書くと、タグとして処理されて見えなくなる
- 「&」をそのまま書くと、後に続く文字でエラーになることもある
このように、ブラウザが文字をどのように読み取るかを理解して、HTMLエンティティを正しく使うことが重要です。
単なる見た目だけでなく、正しく意味が伝わるように記述することがWeb制作の基本です。
HTMLエンティティの表記ルール
HTMLエンティティには、決まった表記のルールがあります。
間違った書き方をすると、ブラウザが正しく表示できなかったり、意味が変わってしまったりするので、正しいルールに従って書くことがとても大事です。
以下が代表的なルールです。
- すべて「&(アンパサンド)」から始める
- 名前付きの場合は「;(セミコロン)」で終わる
- 数値で書く場合は「&#」で始める(例:
<) - 16進数で書く場合は「」で始める(例:
<)
このように、HTMLエンティティは「決まった型」があるので、それに沿って書く必要があります。
正しく書けば、どんな記号も安全に表示できるようになります。
使用頻度の高いエンティティまとめ
最後に、実際によく使うHTMLエンティティをまとめてご紹介します。
これらはWeb制作やブログ、CMSなどでも頻繁に登場するので、覚えておくととても便利です。
<→ 「<」>→ 「>」&→ 「&」"→ 「”」'→ 「’」→ スペース©→ 著作権マーク「©」
これらのエンティティを覚えておくことで、Webページでの文字トラブルやセキュリティの問題を未然に防ぐことができます。
どんな場面でも活用できるので、ぜひ使いこなしましょう。
HTMLエンコードを正しく使う場面と注意点

フォーム入力値の表示時
Webページでは、ユーザーが入力した文字を画面に表示することがよくあります。
そのときにHTMLエンコードをしていないと、不正なコードがそのまま実行される危険があります。
特にコメント欄や問い合わせフォームなど、誰でも自由に書ける場所では、入力された内容がそのままHTMLとして動作してしまうことがあるため注意が必要です。
次のようなときにHTMLエンコードが必要になります。
- 入力されたコメントをWebページに表示するとき
- 名前や住所などを画面に出すとき
- メールの本文や件名をWeb上で見せるとき
これらは一見普通の表示に見えますが、悪意のある人がHTMLやJavaScriptを仕込むことで、攻撃のきっかけになってしまうことがあります。
入力されたデータは必ずHTMLエンコードしてから表示するのが基本のルールです。
JavaScriptとの併用時の注意
HTMLエンコードはJavaScriptと一緒に使うときにも大切なポイントがあります。
特に、JavaScriptの中にHTMLの値を入れるとき、適切なエンコードをしないとコードの一部として扱われてしまう場合があります。
次のようなケースで注意が必要です。
- HTML内の
<script>タグに直接出力する - JavaScriptで
innerHTMLを使って書き換えるとき - テンプレートエンジンなどでHTML+JSを組み合わせるとき
これらの場面では、ユーザーの入力内容がJavaScriptの動作に影響してしまい、画面の改ざんや予期しない動きの原因になります。
安全のためには、必要に応じてJavaScript用のエンコード処理も考える必要があります。
メール送信時のエンコード処理
メールの本文にユーザーが入力した内容を差し込むときにも、エンコード処理は必要です。
メールではHTML形式で送ることが多く、見た目を整えるためにHTMLタグを使うケースもありますが、そこに未エンコードのデータを入れると誤動作の原因になります。
たとえば以下のような場合に注意が必要です。
- Webサイトからの自動返信メール
- 登録完了やお問い合わせ内容の確認メール
- ユーザー入力を含むレポートや通知
これらのメールで、「<」「>」「&」などの記号が正しく表示されないと、内容が読めなかったり、誤解を生んだりします。
HTML形式のメールでは、文字をそのまま送る前に、必ずエンコード処理を挟むのが基本です。
CMS利用時の自動エンコード機能
WordPressやWixなどのCMS(コンテンツ管理システム)を使うと、ユーザーがHTMLを意識せずにページを作れるようになりますが、その裏側では自動的にHTMLエンコードが行われていることが多いです。
これにより、セキュリティ面でも安全な状態が保たれています。
主なCMSの自動エンコードの特徴は以下の通りです。
- 投稿画面で入力した記号や文字が自動的にエンコードされる
- テンプレート内で変数を表示するときにエンコード済み
- 一部の機能ではHTMLタグをそのまま許可する設定もある
自動エンコードが効いているからといって、すべての場面で安心というわけではありません。
カスタマイズやプラグインを使ったときは、自分でエンコード処理が必要になることもあります。
CMSを使っている場合でも、エンコードの仕組みを知っておくことはとても大事です。
セキュリティとHTMLエンコードの関係
HTMLエンコードは、Webサイトのセキュリティを守るための大切な仕組みのひとつです。
特に「XSS(クロスサイトスクリプティング)」という攻撃は、HTMLエンコードをしていないデータをそのまま画面に表示することが原因で起こります。
XSS対策として、次の点に注意しましょう。
- ユーザーが入力した内容は必ずエンコードして表示する
innerHTMLを多用せず、textContentやinnerTextを使う- 信頼できない外部データはエンコードを強化する
- JavaScriptからHTMLに直接書き込む処理を避ける
HTMLエンコードをしっかり行うことで、悪意のあるスクリプトの実行を未然に防ぐことができます。
安全なサイト運営のためには、日ごろから「入力された文字は危険かもしれない」という意識を持つことが大切です。
文字化けを防ぐためのポイント
HTMLエンコードは、文字化けの防止にもつながります。
特に外国語の文字や記号など、環境によって表示できないことがある文字は、HTMLエンティティを使うことで安定した表示が可能になります。
文字化けを防ぐには、以下のポイントが役立ちます。
- 特殊文字や記号はHTMLエンティティにする
- 文字コードは基本的にUTF-8を使う
- ブラウザとサーバーで同じ文字コードを指定する
- テンプレートやCMSの設定を確認する
これらを意識しておくだけで、見た目がおかしくなるトラブルを大幅に減らすことができます。
Webページの品質を保つためにも、文字表示のルールを理解しておきましょう。
他のエンコード方式との違い
HTMLエンコード以外にも、URLエンコードやBase64エンコードなどさまざまなエンコード方式があります。
これらはそれぞれ目的が違うため、使い分けることが大切です。
代表的なエンコード方式の特徴は以下の通りです。
- HTMLエンコード → Webページでの安全な表示に使う
- URLエンコード → URLに記号や日本語を含めるときに使う
- Base64エンコード → 画像やファイルを文字列に変換して送る
このように、それぞれ役割が異なります。
HTMLエンコードはあくまで「HTMLの中で安全に文字を表示する」ための方法であり、他のエンコードとは使いどころが違います。
場面に合わせて適切な方法を選びましょう。
HTMLエンコードに役立つツールと実装方法

オンラインエンコードツールの活用法
HTMLエンコードをすぐに試したいときや、簡単に変換したいときには、オンラインツールを使うととても便利です。
Web上には、文字を入力するだけでHTMLエンティティに変換してくれるツールがたくさんあります。
特別なソフトも知識も必要ないので、初心者でもすぐに使えます。
代表的な機能は以下の通りです。
- 入力した記号や文字を自動でHTMLエンティティに変換
- リアルタイムで変換結果を表示
- ボタン1つでデコードも可能
- コピー&ペーストでそのまま使える
これらのツールを使えば、「この文字、どう書けばいいんだろう?」と迷ったときにすぐ解決できます。
ちょっとした変換から本格的な開発作業まで、幅広く役立つ便利な道具です。
JavaScriptでのエンコード方法
Webページ上で動的にエンコードを行いたい場合は、JavaScriptを使う方法がとても有効です。
JavaScriptには、文字を安全に変換するための関数やテクニックがいくつかあります。
特に、ユーザーの入力をリアルタイムに表示するときなどに活用されます。
以下の方法がよく使われます。
textContentを使う(HTMLではなくテキストとして表示)createTextNodeで安全に出力- エスケープ関数を自作して変換
たとえば、次のようなコードでエンコードの代用ができます。
const div = document.createElement('div');
div.textContent = '<script>';
document.body.appendChild(div);
このように、JavaScriptでの出力もHTMLエンコードと同じように安全に扱うことが大切です。
扱いを間違えると、XSSなどの攻撃につながるため注意しましょう。
PHPやPythonでのエンコード実装
サーバーサイドでもHTMLエンコードはよく使われます。
特にPHPやPythonなどの言語では、組み込み関数を使って簡単にエンコード処理ができるようになっています。
以下のような関数が代表的です。
- PHP →
htmlspecialchars()やhtmlentities() - Python →
html.escape()
具体的には、以下のように使います。
<?php
echo htmlspecialchars('<script>');
?>
import html
print(html.escape("<div>"))
これらの関数を使えば、ユーザーが入力した内容を安全にWebページに表示することができます。
手動で置き換えを行うよりミスが少ないため、信頼性の高い方法です。
CMSやフレームワークでの設定例
WordPressやDjangoなどのCMS・Webフレームワークでも、HTMLエンコードの機能が組み込まれています。
テンプレート内で変数を表示するときに自動でエンコードされる仕組みがあるため、セキュリティ対策としても安心です。
以下のような特徴があります。
- WordPressでは
the_content()などの関数で自動的に処理される - Djangoではテンプレート変数を
{{ variable }}で表示すると自動エスケープ - LaravelやRuby on Railsでもエンコードが標準で有効
このように、CMSやフレームワークを使うと、意識せずともHTMLエンコードされる場面が多くなります。
ただし、一部で無効化されていることもあるため、表示結果をよく確認することが大切です。
自動化によるエンコード処理の利点
HTMLエンコードは、作業のたびに手動でやるとミスが増えます。
そのため、ツールや関数、テンプレート機能を使って自動化することがとても効果的です。
特に大規模なWebサイトやフォームが多いシステムでは、自動化によって安全性と効率が同時に高まります。
自動化するメリットは以下の通りです。
- ミスを減らせる
- 開発スピードが上がる
- セキュリティリスクを下げられる
- 保守や更新がラクになる
自分のサイトに合った方法でエンコードを自動化すれば、手作業では気づけないエラーも防げるようになります。
長く使うWebサイトほど、最初から自動化を意識した設計が重要です。
HTMLエンコードをチェックする方法
HTMLエンコードが正しくできているかどうかは、見た目だけでは分かりにくい場合があります。
特に内部的なコードの誤動作やセキュリティの問題は、しっかりチェックしないと見逃してしまいます。
チェックのポイントは以下の通りです。
- 画面に「<」や「>」がそのまま表示されているか確認
- ソースコードを見てエンティティが使われているかチェック
- JavaScriptやフォームの出力内容を確認
- ブラウザでの表示結果とソースを見比べる
これらをチェックすることで、安全にHTMLが表示されているかどうかを確認できます。
テストの一環として、毎回のリリース前にエンコードの状態を確認する習慣をつけましょう。
実装後に確認すべきポイント
HTMLエンコードを実装したあとも、それが正しく動いているかを定期的に確認することが大切です。
セキュリティや表示崩れなどの問題があとで起きることもあるため、見直しとテストが必要です。
以下の項目を中心に確認しましょう。
- ユーザー入力の表示がすべてエンコードされているか
- JavaScriptとの連携で不具合がないか
- ブラウザや端末による違いが出ていないか
- CMSやテンプレートの仕様変更に影響を受けていないか
これらのチェックを行うことで、問題があっても早い段階で気づき、修正できます。
エンコードは一度設定すれば終わりではなく、継続して見守る意識がとても重要です。
まとめ

これまでに学んできた「HTMLエンコードの必要性とエンティティ一覧」について、特に大切なポイントを以下にまとめます。
- HTMLエンコードは記号を安全に表示するために使う
- 「<」や「&」などはそのまま使うと危険
- HTMLエンティティを使えば文字化けや誤動作を防げる
- フォームやJavaScriptでは特に注意が必要
- CMSやフレームワークでも自動エンコードを確認する
HTMLエンコードは、見た目だけでなく安全なWebページ作りの基本です。
これを機に、自分のWebサイトでもエンコード処理をきちんと見直してみましょう。



