HTML文字エンコーディングUTF-8でなければならない

3 min read

TL;DR

HTML Living Standard には、文字エンコーディング宣言について以下の定義がある。

Regardless of whether a character encoding declaration is present or not, the actual character encoding used to encode the document must be UTF-8.

[訳]:文字エンコーディング宣言が存在するかどうかにかかわらず、文書のエンコードに使用される実際の文字エンコーディングは UTF-8 でなければならない。

つまり、現在の仕様では、文字エンコーディングは UTF-8 でなければならない。

文字エンコーディング宣言

文字エンコーディング宣言は、meta 要素の charset 属性(<meta charset="utf-8">)を使用する必要がある。

また、宣言はファイルの最初の 1024 バイト以内に収まるように head タグの直後に配置するのが望ましい。理由としては、ブラウザが HTML を解釈する際、ファイルの先頭部分を読み込んで文字エンコーディング宣言を探し、1024 バイト以内に宣言があれば、すぐに宣言を取得して解析処理を開始できるためである。もし、宣言が 1024 バイト以内に存在しない場合は、ドキュメントの続きをさらに読み込んで解析処理を開始する必要があり、遅延する可能性があるからである。

meta charset の指定は必要

規定でエンコーディングが UTF-8 なのであれば、あえて<meta charset="utf-8">の記述をしなくて良いのではないかという思いも出てくる。

以下のような理由から、規定でエンコーディングが UTF-8 であっても、HTML ドキュメントには必ず<meta charset="utf-8">のようなエンコーディング宣言を付ける必要がある。

  • エンコード宣言が存在しなくても、ドキュメントの実際のエンコードが UTF-8 であることを指定する必要があるため
  • ASCII 範囲内の文字のみを含む場合でも、フォーム入力やスクリプトで生成される URL などの非 ASCII 文字の処理に必要なため

参考

このページをシェアする

関連タグ

関連記事

`.sr-only`のような非表示スタイルとSEOの関係性の調査

非表示要素はブラックハット SEO ではないのか

[Vite] CSSだけをビルドする方法

背景 / Vite をインストール / 仕様

CSS in JSとは何か

想定読者 / そもそも JS フレームワーク(React、Vue.js)を採用する理由とは何か / 「命令的 UI」 と 「宣言的 UI」 / 「命令的 UI」 VS 「宣言的 UI」 / CSS in JS とは / CSS in JS ライブラリ / Emotion の使い方 / 利用するメリット / 利用するデメ

[CSS in JS] 外部のリセットCSSを使う方法

目的 / 課題 / おまけ

竈門炭治郎をCSS Paint APIで再現する

概要 / 完成品 / 実装方法 / 〆 / 参考

[JavaScript] 不正なセレクタをエスケープする際の対処法

セレクタとして不正な文字 / JavaScript 上での取扱