我不得不第一次處理編碼,而且我很困惑PHP,Apache和瀏覽器如何處理編碼。 PHP和Apache默認使用ISO-8859-1,但大多數網站都是UTF-8。 ISO-8859-1在什麼時候轉換爲UTF-8?另外,由於PHP使用ISO-8859-1,它怎樣才能讀取UTF-8網頁?Apache的默認編碼是ISO-8859-1,但網站是UTF-8?
0
A
回答
0
Apache默認不會「使用」任何編碼,它的工作幾乎與理解或轉換文本編碼有關。 PHP默認不會「使用」ISO-8859,PHP的字符串沒有相關的編碼。
什麼是真實的是,許多PHP的核心字符串函數在其操作中假定爲 ASCII或ISO-8859編碼,並且沒有配備正確處理其他編碼。然而,值得再次說明的是,作爲數據類型的PHP字符串本身沒有任何編碼,沒有什麼能阻止你在PHP中使用任何編碼的字符串,甚至PHP也提供了正確處理字符串操作的函數任何任意編碼。所以,只要你做得對,沒有什麼能阻止你用PHP處理和輸出UTF-8。
然後,Apache並不在乎你發送給客戶端的是什麼,它在任何編碼(或二進制數據)方面都不以任何人的方式支持。它可以做的唯一的事情就是這樣添加的HTTP標頭到響應:
Content-Type: text/html; charset=iso-8859-1
這個頭只存在告知收到什麼樣的內容客戶端。這個頭文件不是基於你發送的實際內容,Apache既不關心也不檢查也不轉換任何東西。它只是設置這個標題,這就是它的全部。您應該配置Apache以設置與您實際從PHP輸出的編碼相對應的正確charset
值,其默認值僅爲iso-8859-1
。或者你可以從PHP設置一個Content-Type
頭文件來阻止Apache添加頭文件。就這樣。
欲瞭解更多信息,請參閱What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text,Handling Unicode Front To Back In A Web App。
相關問題
- 1. -Apache-文件從「網站」不是UTF8
- 2. 我的網站編碼爲響應網站,但它不是
- 3. Apache編碼ascii到utf8
- 4. DOMDocument的默認編碼是什麼?
- 5. perl的默認編碼是什麼5.16.3
- 6. Apache Kafka默認編碼器不工作
- 7. Node.js的緩衝區的toString默認utf8的,但我想沒有編碼
- 8. 編碼名稱是UTF8還是UTF-8?
- 9. 什麼是System.IO.File.ReadAllText默認編碼
- 10. .NET DataSet.GetXml() - 什麼是默認編碼?
- 11. IPython Notebook:什麼是默認編碼?
- 12. django網站默認
- 13. 用戶獲取默認的Apache頁面而不是網站 - Safari/FF?
- 14. 網站不顯示默認編碼的內容
- 15. 如何設置IIS網站的默認編碼?
- 16. 移動網站滑動菜單是不是默認是隱藏的,是滾動
- 17. UTF8編碼和網絡流
- 18. phpmyadmin顯示utf8,但網站doesnt
- 19. 字符集編碼是UTF8,但差異ANSI
- 20. VWD 2010中的默認網站是如何工作的?
- 21. nginx的顯示默認頁面,而不是我的網站
- 22. HTTPS在默認情況下爲Apache上的單個網站
- 23. 多個默認網站IIS
- 24. Django flatpage默認網站
- 25. nosetests默認編碼是ASCII,主程序是utf-8
- 26. laravel/homestead盒子是否帶有默認的網站設置?
- 27. 什麼是在網站後面訪問的默認文件?
- 28. 請說明 - 我的默認網站是什麼?
- 29. 什麼是Java EE網站的默認會話超時?
- 30. Magento使用默認/默認作爲時事通訊的皮膚主題,而不是網站主題默認/ my_theme?
你可以在頁面的標題中定義charcode!檢查頁面標題 –
我是編碼方面的初學者,但我的理解是要更改網頁的編碼,網頁的二進制組成部分必須更改?如果PHP想輸出UTF-8,那麼它不僅僅需要發送HTTP頭或HTML標籤嗎? –
根據你的代碼默認php在php.ini中使用ISO-8859-1,但你可以使用例如header('Content-type:text/html; charset =')來改變輸出或使用meta標籤,html5刪除meta標籤編碼 –