Apache Web 伺服器似乎真的不喜歡 utf-8

Apache Web 伺服器似乎真的不喜歡 utf-8

這真的很煩人,所以我希望這裡有人能告訴我我做錯了什麼。我已經在我的 Windows 7 筆記型電腦上運行 Apache Web 伺服器有一段時間了,現在是為了測試我在業餘時間所做的一些程式設計。最近,我注意到頁面中的 Unicode 字元在瀏覽器中無法正確顯示。我做了很多毫無意義的測試,發現字元實際上是以正確的 UTF-8 形式發送的,而且我還在<meta http-equiv="Content-Type" content="text/html; charset=utf-8">html 輸出的頂部添加了一行,這是為了解決問題,但沒有實際上什麼也沒做。然後,我花時間檢查了 HTTP 回應標頭,發現 Apache 發回了以下內容:

HTTP/1.1 200 好
日期:2015 年 7 月 19 日,星期日 18:18:40 GMT
伺服器:Apache/2.2.25 (Win32)
傳輸編碼:分塊
內容類型:text/html;字符集=iso-8859-1

好的,這看起來是一個非常簡單的問題。根據互聯網,我可以透過添加AddDefaultCharset utf-8到我的 httpd.conf 檔案來解決這個問題。AddDefaultCharset文件中的任何地方都沒有任何行,因此我將其添加到底部,完全按照上面的拼寫進行。然後我重新啟動Apache服務,發現問題沒有改變。因此,我重新啟動了計算機,理論上我可能不知道如何正確重新啟動 Apache,但它仍然無法正確顯示字符,並且仍在發送charset=iso-8859-1標頭。

我還發現一個網站,建議名為Windows VirtualStore 的東西可能會自動將設定檔保存在其他地方,只是為了跟我開玩笑,但我不相信這種情況會發生,因為我在該目錄中找不到任何Apache 檔案。另外,您應該能夠透過獲得資料夾的所有權來停用 VirtualStore,我不久前就這樣做了,因為它不允許我更改任何其他內容。

不幸的是,我甚至不確定這個問題還需要注意什麼。有人有主意嗎?

答案1

嘗試建立一個 3 行 HTML 文件,從瀏覽器請求該文件,然後檢查標頭。這樣做可以確保沒有 CGI 標頭或任何干擾伺服器配置的內容。

<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>

繼續調整您的伺服器配置,直到發送該文件並charset=utf-8在內容類型標頭中指定規格。

接下來,嘗試一個最小的 Perl 程式:

#!/usr/bin/perl   <-- or omit this line as you're on windows
binmode(STDOUT, ":utf8");
print qq(Content-type: text/html; charset=utf-8

<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>
);

如果這有效(發送正確的標頭),那麼其他任何不起作用的內容都在您的庫中,而不是您的伺服器配置中。

相關內容