私のウェブサイトには、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エンコーディングを取得するにはどうすればよいですか?
私はこれらの行を 'Apache2.conf'に追加することでこの問題を修正しました:
AddType text/plain .yml
AddDefaultCharset utf-8
これは、この回答を書いている時点で少し前のことです。最近のApacheインストールでは、utf-8がデフォルトとしてすでに設定されている場合があります。
そのような応答のコンテンツ本文がないため、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ファイルは、デフォルトで選択されるため、実際にこれに含める必要はありませんが、明示的に指定しても問題はありません。