如何在 Apache 中配置 UTF-8 Content-Type 標頭?
我的網站有 UTF-8 編碼的頁面和其他內容。對於 HTML,在元標記中設置編碼是沒有問題的。但是,我也有未正確顯示的 UTF-8 編碼的原始文本文件,例如
⨯
顯示為×
. 我考慮在此類文件的開頭添加字節順序標記,但我不希望這樣做,因為它們並不總是得到很好的支持。我按照其他問題中的說明進行操作,但沒有效果。這是 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 響應類型,您應該會看到這一點。使用 Ctrl + F5 強制刷新和 200 響應,而不是使用 304 響應重新驗證記憶體的響應。
然後您更新了您的問題以包含 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
資源設置字元集。第二個(AddCharset)需要 mod_mime 並將根據文件副檔名設置其他類型的字元集。Javascript 文件以內容類型發送,
application/javascript
而 CSS 文件以內容類型發送,text/css
因此 AddDefaultCharset 設置不會選擇。.htm 和 .html 文件實際上並不需要在其中,因為預設情況下會被拾取,但沒有明確的危害。