對於頁面編碼導致亂碼的理解

2021-09-05 20:30:11 字數 1385 閱讀 7401

以前也遇到過不只一次的編碼不一致的問題,今天和 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位。所以,我們要讓計算機顯示各種字元,就必須要對...