文字コード指定
meta charset
<meta charset> はHTMLファイルの文字エンコーディングをブラウザに伝える。 現代のウェブ開発では UTF-8 を指定するのが標準。<head> の先頭に置くことが重要。
基本的なコード例
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 必ず <head> の先頭付近に配置する -->
<meta charset="UTF-8">
<title>ページタイトル</title>
</head>
<body>
<p>日本語テキスト:こんにちは世界</p>
</body>
</html>なぜ先頭に置く必要があるのか
ブラウザはHTMLを先頭から順番にパースする。 文字コードの指定が遅れると、その前のテキストが誤ったエンコーディングで解釈され、文字化けが発生する可能性がある。 特に <title> の前に置くことが仕様で推奨されている。
避ける(文字化けリスク)
<head>
<title>日本語タイトル</title>
<!-- ← title の後に charset を指定 -->
<meta charset="UTF-8">
</head>推奨(先頭に配置)
<head>
<!-- charset を先頭に配置 -->
<meta charset="UTF-8">
<title>日本語タイトル</title>
</head>UTF-8 が標準の理由
| エンコーディング | 特徴 | 現在の使用 |
|---|---|---|
| UTF-8 | 世界中のすべての文字を表現できる。ASCIIと互換性あり | 推奨・標準 |
| Shift_JIS | 日本語に特化。古いシステムで使われていた | 非推奨・レガシー |
| EUC-JP | Unixシステムで使われた日本語エンコーディング | 非推奨・レガシー |
TipsHTTPヘッダーとの関係
サーバーが返す Content-Type HTTPヘッダーでも文字コードを指定できる。 HTTPヘッダーの指定がHTMLの meta charset より優先される。
# HTTPレスポンスヘッダー(サーバー側で設定)
Content-Type: text/html; charset=UTF-8
# HTMLのmeta charsetと両方指定するのが安全
# → HTTPヘッダーがない場合でもmeta charsetが機能する注意ファイルの保存エンコーディングも合わせること
meta charset="UTF-8" を指定しても、 ファイル自体がShift_JISで保存されていると文字化けが起きる。 エディタでファイルを UTF-8(BOMなし)で保存することを確認すること。 VSCode・Cursor などのモダンエディタはデフォルトでUTF-8を使用する。
🤖 AIプロンプトテンプレート
以下について、AIへの質問プロンプト例を示します。 - `<meta charset="UTF-8">` の役割と、必ず `<head>` の先頭付近に置く理由を教えてください。 - UTF-8 以外のエンコーディング(Shift_JIS・EUC-JP)を今も使うべきでない理由は何ですか? - サーバーの `Content-Type` ヘッダーと `meta charset` が競合した場合、どちらが優先されますか? - ファイルを UTF-8 で保存しているかを確認・変換する方法を教えてください。 - BOM(Byte Order Mark)付き UTF-8 と BOMなし UTF-8 の違いと、HTML で推奨されるのはどちらですか?
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。