HTMLで文字が表示されない原因と対処法【パターン別に解説】

Web

「HTMLファイルを開いたら文字が化けた」「<&を書いたら消えた」「コードを書いたのに画面に出ない」など、HTMLで文字が表示されない問題にはいくつかのパターンがあります。
原因によって対処法がまったく異なるため、まず症状がどのケースに当てはまるかを確認しましょう。


スポンサーリンク

パターン1:文字化けが発生している(文字コードの不一致)

原因

HTMLファイルの文字コードと、ブラウザが解釈した文字コードが一致していない場合に文字化けが発生します。
たとえばファイルを「Shift_JIS」で保存したのに、<meta charset="UTF-8">と指定していると、ブラウザが誤った文字コードで解釈して文字化けします。

日本語に対応した主な文字コードは次の3種類です。

文字コード特徴
UTF-8現在のWebの標準。あらゆる言語に対応
Shift_JIS日本語向け。一部の環境で使用される
EUC-JP主にUNIX系システムで使用されていた

現在のWeb制作ではUTF-8が標準となっています。

対処法1:metaタグに文字コードを明記する

<head>タグの中に、以下のタグを追加します。

<meta charset="UTF-8">

このタグは<head>内のできるだけ先頭(<title>より前)に置くのが正しい記述方法です。

対処法2:ファイルの保存形式をUTF-8に変更する

metaタグの指定だけでは解決しない場合、ファイル自体の文字コードが異なっている可能性があります。
Visual Studio Code(VSCode)であれば、画面右下に表示されている文字コード名をクリックして「UTF-8で保存」を選択できます。
メモ帳の場合は「名前を付けて保存」ダイアログの「文字コード」欄で「UTF-8」を選びます。

対処法3:ブラウザのキャッシュを削除して再読み込みする

ファイルを修正してもブラウザのキャッシュが残っていると、古い状態が表示されることがあります。
「Ctrl + Shift + R」(Macは「Command + Shift + R」)でキャッシュを無視した強制再読み込みを実行します。


パターン2:<や&などの記号が消える・欠ける(特殊文字の未エスケープ)

原因

HTMLでは<>はタグの開始・終了を示す記号として解釈されます。
そのため、本文中に「<div>と書いてください」のようなコードを直接書くと、ブラウザがHTMLタグだと認識して画面に表示されません。
同様に&もHTMLの特殊表記の開始文字として扱われるため、そのまま書くと意図しない動作になります。

対処法:HTMLエンティティ(文字実体参照)を使う

表示したい文字をHTMLエンティティに置き換えることで解決できます。

表示したい文字HTMLエンティティ
<(小なり)&lt;
>(大なり)&gt;
&(アンパサンド)&amp;
"(ダブルクォート)&quot;
 (半角スペース連続)&nbsp;

たとえば本文中に<div>というコードを表示したい場合は、以下のように書きます。

<p>&lt;div&gt;と書いてください</p>

ブラウザはこれを「<div>と書いてください」と正しく表示します。

&lt;自体をテキストとして表示したい場合

&lt;を文字として表示したい場合は、先頭の&&amp;に置き換えます。

<!-- &lt; と表示したい場合 -->
<p>&amp;lt;</p>

パターン3:コードを書いたのに画面に出ない(CSSによる非表示)

原因

CSSのdisplay: noneまたはvisibility: hiddenが適用されていると、HTMLに記述があっても画面に表示されません。
テンプレートやフレームワークを使っている場合、意図せず非表示設定が引き継がれることがあります。

2つのプロパティの違いは次のとおりです。

プロパティ表示レイアウト上のスペース
display: none非表示スペースも消える
visibility: hidden非表示スペースは残る

対処法:ブラウザの開発者ツールで確認する

  1. ページ上で右クリックし「検証」(または「Inspect」)を選びます
  2. 非表示になっている要素をクリックします
  3. 右側の「スタイル」パネルでdisplay: nonevisibility: hiddenが適用されていないか確認します
  4. 該当するCSSを修正または削除します

パターン4:拡張子が間違っていてコードがそのまま表示される

原因

HTMLファイルの拡張子が.htmlではなく.txtなどになっていると、ブラウザがHTMLとして解釈せず、コードがそのままテキストとして表示されます。

対処法

ファイル名を確認し、拡張子を.htmlまたは.htmに変更します。
Windowsの場合、拡張子が非表示になっていることがあるため、エクスプローラーの「表示」から「ファイル名拡張子」のチェックをオンにして確認します。


パターン5:フォントが対応していない文字を使っている

原因

CSSで指定したフォントが、表示しようとしている文字(特定の漢字・記号・絵文字など)に対応していない場合、文字が「□」(豆腐)や「?」で表示されたり、消えたりすることがあります。

対処法

CSSのフォント指定を見直し、日本語対応フォントをフォールバックとして指定します。

body {
  font-family: "Noto Sans JP", "游ゴシック", YuGothic, sans-serif;
}

Google Fontsなどのウェブフォントサービスを利用する方法も有効です。


症状から原因を探す早見表

症状疑われる原因確認箇所
全体が意味不明な文字列になる文字コードの不一致<meta charset>とファイルの保存形式
<&を書くと消える・崩れる特殊文字の未エスケープHTMLエンティティへの置き換え
コードを書いたのに画面に出ないCSSで非表示開発者ツールのスタイル確認
タグがそのままテキストで出る拡張子の誤りファイルの拡張子(.htmlか確認)
一部の文字が□や?になるフォントの未対応CSSのfont-family設定

まとめ

HTMLで文字が表示されない原因は「文字コードの不一致」「特殊文字の未エスケープ」「CSSによる非表示」「拡張子の誤り」「フォントの未対応」の5つが代表的です。
現在のWeb制作では文字コードはUTF-8に統一することが推奨されており、<meta charset="UTF-8">の記述と、ファイル保存時の文字コードをUTF-8に揃えておくだけで文字化けの大半を防げます。
それ以外の症状が出た場合は、ブラウザの開発者ツール(F12キー)を活用して原因を特定しましょう。


参考情報源

コメント

タイトルとURLをコピーしました