ファイルのエンコーディングを人間が判読可能な方法で表示することに興味がある場合は、T.J. Crowder'sアイデア(// Encoding: UTF-8
のようなコメントをファイルに追加する)は単なるものです。 Jukka K. Korpelaが指摘しているように、BOMも使用できます。
しかし、あなたは文書で宣言されている文字セットを示すために、機械読み取り可能な方法をしたい場合は、他のいくつかの方法があります。
例えば、Apacheのhttpdのサーバ上の次の宣言のいずれかを使用する場合があります:
AddDefaultCharset UTF-8
AddCharset UTF-8 .js
AddType 'application/javascript; charset=UTF-8' js
*
* を使用してケースを作成することに興味はありません。"text/javascript"
です。しかし、あなたがどちらか一方がなぜ好ましいかを知ることに興味があるなら、cf. https://stackoverflow.com/a/4101763/1070047。しかし、トピックを考えると、application/javascript
は非常に適切と思われます(特に、BOMを使用する場合は、コードをバイナリとして扱う必要があるため)。
コードが解釈された場合は処理/ /コンパイルされ、サーバー側(例えばPHP)、あなたは
header("Content-Type: application/javascript; charset=utf-8");
は、少なくともPHP内で、そのヘッダを追加してください...例えば、文書のヘッダーを設定することができます文が出力される前に実行されます。
最後に、どの宣言を使用するかを決定する際には、BOMが文書ヘッダーよりも大きな権限を持っていることを理解している/尊重していると考えます。両方とも、リンクされた/ソースの文字セット宣言(例えば<script type="application/javascript" src="script.js" charset="utf-8"></script>
など)よりも優先されます。
また、UTF-8用のBOMを含めることもできますし、ブラウザはそれを尊重します。 – Andrea
@Andrea:すべてのブラウザではなく、信頼性がありません。関連するRFCでは、応答が「US-ASCII」であることを明確に示しています。ちょうど2週間前に、IEはajaxでリクエストされたJSONをUTF-8で解釈していましたが、FirefoxはBOMを無効にしてJSONを無効としていました。 –
@ T.J.Crowder関連するRFCはどれですか? [WHATWGのエンコーディング仕様では、「バイトオーダーマーク(BOMとも呼ばれる)は他のものよりも信頼性が高い」と記載されています。](https://encoding.spec.whatwg.org/#specification-hooks)。もちろん、正しく処理するには、charset =を含める必要があります。 – Andrea