文章の中に「5 < 10」と書いたら、その先がまるごと消えてしまった。あるいは、記事にHTMLのコードを載せようとしたら、コードが実際のタグとして動いてしまった。どちらも同じ原因です。

なぜ消えるのか

ブラウザは < を見つけると「ここからタグが始まる」と判断します。だから「5 < 10」と書くと、< 10 の部分をタグの書き始めだと思って読み進め、閉じる > が見つかるまでの文字を表示しなくなります。

つまり消えたのではなく、タグの一部として扱われているだけです。文字として見せたいときは、別の書き方に置き換えます。これをエスケープと呼びます。

覚えるのは4つだけ

  • < は &lt; と書く(less than の略)
  • > は &gt; と書く(greater than の略)
  • & は &amp; と書く
  • " は &quot; と書く(属性値の中で使うときだけ注意)

& で始まり ; で終わるのが決まりです。最後のセミコロンを忘れると、そのまま文字として出てしまうので気をつけてください。

CODEエスケープする前と、した後コードを書き換えると、すぐ下で動きます

1行目は消えて表示されません。2行目は &lt; に置き換えてあるので、記号として表示されます。

コードを載せるときは pre と code

記事の中にコードを載せたいときは、エスケープしたうえで pre と code で囲みます。pre は改行と空白をそのまま表示するタグ、code は「これはコードです」という意味を持つタグです。

CODEコードをコードとして見せるコードを書き換えると、すぐ下で動きます

pre を外すと、改行とインデントが消えて1行になります。試してみてください。

全角文字にも注意

エスケープとは別に、もうひとつ多いのが全角文字の混入です。日本語入力のまま記号を打つと、見た目がほとんど同じ別の文字になります。

  • 全角スペース … 半角スペースと見分けがつかない。タグの中に入ると壊れる
  • < > / … 全角の山かっこやスラッシュはタグとして認識されない
  • ” “ … 全角の引用符。属性を囲むと属性として読まれない

エディタで空白文字を表示する設定にしておくと、全角スペースが目に見えるようになります。原因不明の崩れの多くは、これで発見できます。

まとめ

  • 消えたのではなく、タグとして読まれている
  • 文字として見せたい記号は &lt; &gt; &amp; に置き換える
  • コードを載せるときは pre と code で囲む
  • 見た目が同じ全角文字にも注意する