首頁 >後端開發 >php教程 >windows phone 8 應用 php 各種應用亂碼問題的解決方法

windows phone 8 應用 php 各種應用亂碼問題的解決方法

WBOY
WBOY原創
2016-07-29 08:42:34962瀏覽

1) 使用標籤設定頁面編碼
這個標籤的作用是聲明客戶端的瀏覽器用什麼字元集編碼顯示該頁面,xxx 可以為GB2312、GBK、UTF-8(和MySQL 不同,MySQL 是UTF8)等等。因此,大部分頁面可以採用這種方式來告訴瀏覽器顯示這個頁面的時候採用什麼編碼,這樣才不會造成編碼錯誤而產生亂碼。但有的時候我們會發現有了這句還是不行,不管 xxx 是哪一種,瀏覽器採用的始終都是一種編碼,這個情況我後面會談到。
請注意, 是屬於 HTML 資訊的,只是一個聲明,只表示伺服器已經把 HTML 資訊傳到了瀏覽器。
2) header("content-type:text/html; charset=xxx");
這個函數 header() 的作用是把括號裡面的資訊發到 http 標頭。如果括號裡面的內容為文中所說那樣,那作用和 標籤基本上相同,大家對照第一個看發現字符都差不多的。但不同的是如果有這段函數,瀏覽器就會永遠採用你所要求的 xxx 編碼,絕對不會不聽話,因此這個函數是很有用的。為什麼會這樣呢?那就得說說 http 標頭和 HTML資訊的差別了:
http 標頭是伺服器以 http 協定傳送 HTML 資訊到瀏覽器前所送出的字串。而 標籤是屬於 HTML 資訊的,所以 header() 傳送的內容先到達瀏覽器,通俗點就是 header() 的優先權高於 (不知道可不可以這樣講)。假如一個 php 頁面既有header("content-type:text/html;charset=xxx"),又有,瀏覽器就只認前者 http 標頭而不認 meta 了。當然這個函數只能在 php 頁面內使用。
同樣也留有一個問題,為什麼前者就絕對起作用,而後者有時候就不行呢?這就是接下來要談的Apache 的原因了。
3) AddDefaultCharset
Apache 根目錄的 conf 資料夾裡,有整個 Apache 的設定檔 httpd.conf。
用文字編輯器開啟 httpd.conf,第 708 行(不同版本可能不同)有 AddDefaultCharset xxx,xxx為編碼名稱。這行程式碼的意思:設定整個伺服器內的網頁檔案 http 標頭裡的字元集為你預設的 xxx字元集。有這行,就等於是為每個檔案加了一行 header("content-type:text/html; charset=xxx")。這就明白為什麼明明 設定了是 utf-8,可瀏覽器總是採用 gb2312 的原因。
如果網頁裡有 header("content-type:text/html; charset=xxx"),就把預設的字元集改為你設定的字元集,所以這個函數永遠有用。如果把 AddDefaultCharset xxx 前面加個"#",註解掉這句,而且頁面裡不含 header("content-type…"),那這個時候就輪到 meta 標籤起作用了。
下面列出以上的優先順序:
.. header("content-type:text/html; charset=xxx")
.. AddDefaultCharset xxx
..
如果你是web 程式設計師,建議給你的每個頁面都加個header("content-type:text/html;charset=xxx"),這樣可以保證它在任何伺服器都能正確顯示,可移植性也比較強。
4) php.ini 中的 default_charset 配置:
php.ini 中的 default_charset = "gb2312" 定義了 php 的預設語言字元集。一般建議註解掉此行,讓瀏覽器根據網頁頭中的 charset 來自動選擇語言而非做一個強制性的規定,這樣就可以在同台伺服器上提供多種語言的網頁服務。
PHP截取漢字亂碼問題解決方法mb_substr函數的應用
mysql 中文亂碼解決方法集錦

以上就介紹了windows phone 8 應用 php 各種應用亂碼問題的解決方法,包括了windows phone 8 應用方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn