HTML では、script 要素にオプションの charset 属性があります。
その目的は何ですか?
いつ便利ですか?
ページが使用しているエンコードとは異なるエンコードで JavaScript ファイルがエンコードされている場合は、charset
属性を使用して、ブラウザに解釈方法を伝えることができます。
たとえば、ページは を使用してLatin1
いるが、JS ファイルはUTF-8
.
パラメータの目的はcharset
、エンコーディングが HTTP プロトコル レベルで指定されていない場合に、外部スクリプトのエンコーディングを指定することです。HTTP ヘッダーのエンコーディング情報をオーバーライドすることを意図したものではなく、それを行いません。
これは、作成者が HTTP ヘッダーを制御できず、ヘッダーで文字エンコーディングが指定されていない場合に役立ちます。また、HTTP サーバー経由ではなく、直接アクセスされる Web ページのローカル コピーなどのオフライン ファイルにも役立つため、HTTP ヘッダーは存在しません。
実際には、あまり役に立ちません。JavaScript ファイルで非 ASCII 文字を使用する必要がある場合は、UTF-8 エンコーディングを使用できます。先頭の BOM で UTF-8 を使用する場合、BOM は、ブラウザーがエンコーディングを推測できるようにする便利なインジケーターとして機能します。しかし、追加で使用しても害はありませんcharset=utf-8
。
各 JavaScript ファイルはページとは別の要素です。結局のところ、ページとはまったく関係のないリモートの作成者のサーバーから JS をロードすることもできます。他の外部要素と同様に、リモートサーバーが何らかの理由で間違った文字セットを返す場合、または念のために「文字セット」を手動で指定できます。
また、この JS ファイルへの書き込みアクセス権を自分で持っている場合は、すべての非 ASCII を Unicode 位置エスケープに置き換えることができます。これにより、ヘッダーで指定されているエンコーディングに関係なく、シンボルが常に正しく解釈されることが保証されます。Google Closure Compiler などの一部の JS ミニファイアーは、自動的に実行できます。