以前也遇到過不只一次的編碼不一致的問題,今天和 laruence 前輩學習了一下,終於明白了其中的一些東西
1. 檔案有自己的編碼 ,比如windows下的ansi、或是utf8 。
2. apache有乙個defaultcharset
3. 程式中可以規定返回的編碼格式,如php中的
header("
content-type:text/html; charset=utf-8");
4. 頁面檔案的頭部可以規定編碼:如:
問題出來了,四種編碼要是不一致,會怎麼樣呢?
1. 頁面沒有指定charset , apache配置defaultcharst gbk , 頁面檔案編碼是utf-8 ,結果亂碼
2. 頁面指定charset為utf-8, apache配置defaultcharset gbk. 頁面檔案是utf-8 ,結果亂碼
3. php header申明charset為utf8, apache配置defaultcharst gbk,頁面檔案編碼是utf8,結果正常
4. 頁面指定charset為utf-8, apache設定defaultcharset off, 頁面檔案是utf-8 ,結果正常
結論:1. apache給客戶瀏覽器傳送的http頭資訊中,content-type可以用程式來改變
2. 既使,檔案儲存格式和頁面中規定的編碼一致的情況下也有可能出現亂碼,因為apache中defaultcharset和頁面的規定字符集的優先順序不可確定,據說不同瀏覽器的標準不同
3。當apache不指定defaultcharset的時候,頁面編碼由頁面自己的meta標籤指定。
4. 當apache指定的時候,將忽略頁面中的meta標籤指定的編碼. 但是容許指令碼直接header編碼方式給客戶端
最後,還有乙個更詳細的解釋,來自laruence的原創
對於字元編碼的理解
1.對於ascii碼的理解 採用乙個位元組來表示英文 數字的符號,將其與二進位制一一對應,位元組第一位為0,共編制128個符號,其中32個不能列印出來 2.非ascii編碼 由於乙個位元組可以表示256個字元,前0 127還是當時美國所表示的符號,各個國家根據自己的符號,編制屬於自己的128 256...
對於RestFul編碼風格的理解
resultful風格 restful風格是一種資源定位以及資源操作的風格。它既不是某種必須遵循的標準,也不是大家都不能改動的協議,而是一種編碼風格。當我們在實際的業務開放當中使用到restful風格時,會使得我們的業務進展速度很大程度度的提高。主要功能 get 用於查詢資源 post 用於建立資源...
對於檔案編碼格式的淺顯理解
字型亂碼這個問題相信很多人都遇到過,但是都是間歇性的,不是經常性的,大多時候都沒有太在意。在遇到過這麼多次亂碼之後,特別是在linux下開啟windows的檔案亂碼,我覺得有必要了解一下編碼方式了。首先,計算機內部只能儲存二進位制資料,即1和0的bit位。所以,我們要讓計算機顯示各種字元,就必須要對...