同樣也留有一個問題為什麼前者就絕對起作用而後者有時候就不行呢?這就是接下來要談的Apache 的原因了
) AddDefaultCharset
Apache 根目錄的 conf 文件夾裡有整個 Apache 的配置文檔 httpdconf
用文本編輯器打開 httpdconf第 行(不同版本可能不同)有 AddDefaultCharset xxxxxx為編碼名稱這行代碼的意思設置整個服務器內的網頁文件 http 標頭裡的字符集為你默認的 xxx字符集有這行就相當於給每個文件都加了一行 header(contenttype:text/html; charset=xxx)這下就明白為什麼明明 設置了是 utf可浏覽器始終采用 gb 的原因
如果網頁裡有 header(contenttype:text/html; charset=xxx)就把默認的字符集改為你設置的字符集所以這個函數永遠有用如果把 AddDefaultCharset xxx 前面加個#注釋掉這句而且頁面裡不含 header(contenttype…)那這個時候就輪到 meta 標簽起作用了
下面列出以上的優先順序
header(contenttype:text/html; charset=xxx)
AddDefaultCharset xxx
如果你是 web 程序員建議給你的每個頁面都加個header(contenttype:text/html;charset=xxx)這樣就可以保證它在任何服務器都能正確顯示可移植性也比較強
) phpini 中的 default_charset 配置
phpini 中的 default_charset = gb 定義了 php 的默認語言字符集一般推薦注釋掉此行讓浏覽器根據網頁頭中的 charset 來自動選擇語言而非做一個強制性的規定這樣就可以在同台服務器上提供多種語言的網頁服務
結束語
其實 php 開發中的中文編碼並沒有想像的那麼復雜雖然定位和解決問題沒有定規各種運行環境也各不盡然但後面的原理是一樣的了解字符集的知識是解決字符問題的基礎不過隨著中文字符集的變化不僅僅是 php 編程中文信息處理中的問題還是會存在一段時間的
[] [] [] []
From:http://tw.wingwit.com/Article/program/PHP/201311/21389.html