すべてのガイド

テキストに「&」と表示される理由と直し方

公開日 · 更新日 読了目安 2分

テキストに「&」ではなく「&」と表示されるとき、HTMLエンティティが1回多くエンコードされています。ツールは一度に1段階ずつデコードし、まだ残っているときはそう伝えます。

HTMLエンティティとは

エンティティは、ページのコードのために予約された文字を表す記号の並びです。よく使われるものが5つあります。

文字エンティティ
&&
<&lt;
>&gt;
"&quot;
'(まっすぐなアポストロフィ)&#039;

二重エンコードの原因

テキストが、それぞれエンコードを行う2つのシステムを通ることがあります。エディターと、ページのテンプレートです。通るたびに、前のエンティティの「&」が変換されます。HTMLエンティティをエンコード/デコードで「Tom & Jerry」をエンコードすると「Tom &amp; Jerry」になり、その結果をもう一度エンコードすると「Tom &amp;amp; Jerry」になります。

手順できあがるテキスト
元のテキストTom & Jerry
1回エンコードTom &amp; Jerry
2回エンコードTom &amp;amp; Jerry

ブラウザは表示のとき1段階だけデコードします。そのため、2回エンコードされたテキストは「&」ではなく「&amp;」と表示されます。

1段階ずつデコードする

ツールは1回の処理で、エンティティを1段階だけ取り除きます。結果にまだエンティティが含まれていれば、「両方」モードがそれを知らせるので、結果にもう一度デコードを行います。

テキスト1回目のデコード2回目のデコード
Tom &amp;amp; JerryTom &amp; JerryTom & Jerry
&amp;lt;b&amp;gt;gras&amp;lt;/b&amp;gt;&lt;b&gt;gras&lt;/b&gt;<b>gras</b>

1段階だけデコードすれば、意図したエンコードを元に戻してしまうことを避けられます。画面に「&amp;」と表示したいコード例は、ページの中では「&amp;amp;」と書かれます。

アクセント記号と記号

デコードは、セミコロンで終わるすべての名前付きエンティティを理解します。よく使う5つだけではありません。「caf&eacute; &agrave; 5&nbsp;&euro; &copy; 2026」は「café à 5 € © 2026」になり、ノーブレークスペースは本物のノーブレークスペースになります。

数値エンティティ

数値エンティティもデコードされます。「&#233;t&#xE9;」は「été」になり、「&#x1F600;」と「&#128512;」は同じ絵文字になります。

ツールが手を触れないもの

  • 「&inconnue;」のような未知のエンティティは、そのまま残ります。
  • 文中の「&amp」や「&lt」のように、末尾にセミコロンのないエンティティには手を触れません。
  • 「https://exemple.fr/?a=1&param=2&copy=4」のようなパラメータ付きのアドレスは、正確なままです。「&param」と「&copy」はエンティティとは見なされません。

コードを表示するためにエンコードする

ページにコードの一部を表示するには、1回だけエンコードします。テキスト「<a href="x">l’été & plus</a>」は「&lt;a href=&quot;x&quot;&gt;l&#039;été &amp; plus&lt;/a&gt;」になります。アクセント付きの文字はエンコードされず、予約された5文字だけがエンコードされます。

問題を避ける

エンコードは、ページに書き込む最後の瞬間に、1回だけ行います。誤ったエンコードの残りをまとめて置き換えるには、テキストを検索して置換が向いています。Webアドレスは別のエンコードに従います。それはBase64、ハッシュ、エンコードされたアドレスを混同しないで説明しています。

結果を確認する

  1. ツールがエンティティが残っていると知らせる限り、デコードをもう一度行います。
  2. 画面上の元のテキストと比べます。
  3. ノーブレークスペースと絵文字を確認します。

HTMLエンティティをエンコード/デコード