定位問題時常用的技巧
定位中文編碼問題通常采用最笨的也是最有效的辦法―在你認為有嫌疑的程序處理後打印字符串的內碼通過打印字符串的內碼你可以發現什麼時候中文字符被轉換成 Unicode什麼時候Unicode 被轉回中文內碼什麼時候一個中文字成了兩個 Unicode 字符什麼時候中文字符串被轉成了一串問號什麼時候中文字符串的高位被截掉了……
取用合適的樣本字符串也有助於區分問題的類型如aa啊 aa?@aa 等中英相間GBGBK特征字符均有的字符串一般來說英文字符無論怎麼轉換或處理都不會失真(如果遇到了可以嘗試著增加連續的英文字母長度)
解決各種應用的亂碼問題
) 使用 標簽設置頁面編碼
這個標簽的作用是聲明客戶端的浏覽器用什麼字符集編碼顯示該頁面xxx 可以為 GBGBKUTF(和 MySQL 不同MySQL 是 UTF)等等因此大部分頁面可以采用這種方式來告訴浏覽器顯示這個頁面的時候采用什麼編碼這樣才不會造成編碼錯誤而產生亂碼但是有的時候我們會發現有了這句還是不行不管 xxx 是哪一種浏覽器采用的始終都是一種編碼這個情況我後面會談到
請注意 是屬於 HTML 信息的僅僅是一個聲明僅表明服務器已經把 HTML 信息傳到了浏覽器
) header(contenttype:text/html; charset=xxx);
這個函數 header() 的作用是把括號裡面的信息發到 http 標頭如果括號裡面的內容為文中所說那樣那作用和 標簽基本相同大家對照第一個看發現字符都差不多的但是不同的是如果有這段函數浏覽器就會永遠采用你所要求的 xxx 編碼絕對不會不聽話因此這個函數是很有用的為什麼會這樣呢?那就得說說 http 標頭和 HTML信息的差別了
http 標頭是服務器以 http 協議傳送 HTML 信息到浏覽器前所送出的字串而 標簽是屬於 HTML 信息的所以 header() 發送的內容先到達浏覽器通俗點就是 header() 的優先級高於 (不知道可不可以這樣講)假如一個 php 頁面既有header(contenttype:text/html;charset=xxx)又有浏覽器就只認前者 http 標頭而不認 meta 了當然這個函數只能在 php 頁面內使用
[] [] [] []
From:http://tw.wingwit.com/Article/program/PHP/201311/21388.html