web-dev-qa-db-ja.com

ApacheでUTF-8 Content-Typeヘッダーを設定するにはどうすればよいですか?

私のウェブサイトには、UTF-8エンコーディングのページやその他のコンテンツがあります。 HTMLの場合、メタタグでエンコーディングを設定しても問題ありません。ただし、×と表示されるなど、正しく表示されないUTF-8エンコードの raw text files も使用しています。私はそのようなファイルの先頭にバイトオーダーマークを追加することを検討しましたが、それらが常に十分にサポートされているわけではないので、そうしない方がよいでしょう。 この質問 の指示に従いましたが、効果がありませんでした。これはHTTP応答ヘッダーです。

HTTP/1.1 200 OK
Date: Sat, 12 Aug 2017 15:41:04 GMT
Server: Apache/2.4.10 (Debian)
Last-Modified: Wed, 09 Aug 2017 19:24:33 GMT
ETag: "c04c-5565707a34966"
Accept-Ranges: bytes
Content-Length: 49228
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive

Content-Type: text/plain; charset=utf-8に会いたいと思っていました。これらのURIの信頼できるUTF-8エンコーディングを取得するにはどうすればよいですか?

1
Brent

私はこれらの行を 'Apache2.conf'に追加することでこの問題を修正しました:

AddType text/plain .yml
AddDefaultCharset utf-8

これは、この回答を書いている時点で少し前のことです。最近のApacheインストールでは、utf-8がデフォルトとしてすでに設定されている場合があります。

1
Brent

そのような応答のコンテンツ本文がないため、304 Modified応答のContent-Typeは送信されません。

200応答タイプを見てください。これが表示されます。キャッシュされた応答を304応答で再検証するのではなく、Ctrl + F5を使用して更新と200応答を強制します。

次に、200応答を含めるように質問を更新しましたが、Content-Type: text/plainヘッダーまたは同等のものが(文字セットが含まれていない場合でも)常にあると予想しますが、例にはありません。その中にすべての詳細がありますか?

いずれにせよ、これを設定する正しい方法は、Apache構成に以下を追加することです。

#Set the correct Char set so don't need to set it per page.
AddDefaultCharset utf-8
#for css, js, etc.
AddCharset utf-8 .htm .html .js .css

最初の( AddDefaultCharset )は、text/plainおよびtext/htmlリソースの文字セットを設定します。

2番目の( AddCharset )はmod_mimeを必要とし、ファイル拡張子に基づいて他のタイプの文字セットを設定します。 JavaScriptファイルはapplication/javascriptのコンテンツタイプで送信され、CSSファイルはtext/cssのコンテンツタイプで送信されるため、AddDefaultCharset設定では取得されません。 .htmおよび.htmlファイルは、デフォルトで選択されるため、実際にこれに含める必要はありませんが、明示的に指定しても問題はありません。

4
Barry Pollard