IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁網(wǎng)絡(luò)編程PHP編程 → 用header或meta實現(xiàn)PHP頁面編碼的區(qū)別

用header或meta實現(xiàn)PHP頁面編碼的區(qū)別

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

  一、頁面編碼

  1. 使用 標簽設(shè)置頁面編碼

  這個標簽的作用是聲明客戶端的瀏覽器用什么字符集編碼顯示該頁面,xxx可以為GB2312,GBK,UTF-8(和MySQL不同,MySQL是 UTF8)等等。因此,大部分頁面可以采用這種方式來告訴瀏覽器顯示這個頁面的時候采用什么編碼,這樣才不會造成編碼錯誤而產(chǎn)生亂碼。但是有的時候我們會發(fā)現(xiàn)有了這句還是不行,不管xxx是哪一種,瀏覽器采用的始終都是一種編碼,這個情況我后面會談到。

  請注意,是屬于html信息的,僅僅是一個聲明,它起作用表明服務(wù)器已經(jīng)把HTML信息傳到了瀏覽器。

  2. header("content-type:text/html; charset=xxx");

  這個函數(shù)header()的作用是把括號里面的信息發(fā)到http標頭。

  如果括號里面的內(nèi)容為文中所說那樣,那作用和標簽基本相同,大家對照第一個看發(fā)現(xiàn)字符都差不多的。但是不同的是如果有這段函數(shù),瀏覽器就會永遠采用你所要求的xxx編碼,絕對不會不聽話,因此這個函數(shù)是很有用的。為什么會這樣呢?那就得說說HTTPS標頭和HTML信息的差別了:

  https標頭是服務(wù)器以HTTP協(xié)議傳送HTML信息到瀏覽器前所送出的字串。

  因為meta標簽是屬于html信息的,所以header()發(fā)送的內(nèi)容先到達瀏覽器,通俗點就是header()的優(yōu)先級高于meta(不知道可不可以這樣講)。加入一個php頁面既有header("content-type:text/html; charset=xxx"),又有,瀏覽器就只認前者http標頭而不認meta了。當(dāng)然這個函數(shù)只能在php頁面內(nèi)使用。

  同樣也留有一個問題,為什么前者就絕對起作用,而后者有時候就不行呢?這就是接下來要談的Apache的原因了。

  3. AddDefaultCharset

  Apache 根目錄的 conf 文件夾里,有整個Apache的配置文檔httpd.conf。

  用文本編輯器打開httpd.conf,第708行(不同版本可能不同)有AddDefaultCharset xxx,xxx為編碼名稱。這行代碼的意思:設(shè)置整個服務(wù)器內(nèi)的網(wǎng)頁文件https標頭里的字符集為你默認的xxx字符集。有這行,就相當(dāng)于給每個文件都加了一行header("content-type:text/html; charset=xxx")。這下就明白為什么明明meta設(shè)置了是utf-8,可瀏覽器始終采用gb2312的原因。

  如果網(wǎng)頁里有header("content-type:text/html; charset=xxx"),就把默認的字符集改為你設(shè)置的字符集,所以這個函數(shù)永遠有用。如果把AddDefaultCharset xxx前面加個"#",注釋掉這句,而且頁面里不含header("content-type…"),那這個時候就輪到meta標簽起作用了。

  總結(jié):

  來個排序

  header("content-type:text/html; charset=xxx")  

  AddDefaultCharset xxx  

    

  如果你是web程序員,給你的每個頁面都加個header("content-type:text/html; charset=xxx"),保證它在任何服務(wù)器都能正確顯示,可移植性強。

  至于那句AddDefaultCharset xxx,要不要注釋就仁者見仁了。反正我是注釋掉了,不過我寫頁子也要寫header(),便于放到服務(wù)器上能正常顯示。

  二、數(shù)據(jù)庫編碼

  PHP 程序在查詢數(shù)據(jù)庫之前,首先執(zhí)行 mysql_query("SET NAMES xxxx");其中 xxxx 是你網(wǎng)頁的編碼(charset=xxxx),如果網(wǎng)頁中 charset=utf8,則 xxxx=utf8,如果網(wǎng)頁中 charset=gb2312,則xxxx=gb2312,幾乎所有WEB程序,都有一段連接數(shù)據(jù)庫的公共代碼,放在一個文件里,在這文件里,加入 mysql_query("set names")就可以了。

  SET NAMES 顯示客戶端發(fā)送的 SQL 語句中使用什么字符集。因此,SET NAMES 'utf-8'語句告訴服務(wù)器"將來從這個客戶端傳來的信息采用字符集utf-8"。它還為服務(wù)器發(fā)送回客戶端的結(jié)果指定了字符集。(例如,如果你使用一個SELECT語句,它表示列值使用了什么字符集。)

關(guān)鍵詞標簽:PHP頁面編碼,header,m

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 plsql developer怎么連接數(shù)據(jù)庫-plsql developer連接數(shù)據(jù)庫方法 plsql developer怎么連接數(shù)據(jù)庫-plsql developer連接數(shù)據(jù)庫方法 2021年最好用的10款php開發(fā)工具推薦 2021年最好用的10款php開發(fā)工具推薦 php利用淘寶IP庫獲取用戶ip地理位置 php利用淘寶IP庫獲取用戶ip地理位置 在 PHP 中使用命令行工具 在 PHP 中使用命令行工具

相關(guān)下載

    人氣排行 詳解ucenter原理及第三方應(yīng)用程序整合思路、方法 plsql developer怎么連接數(shù)據(jù)庫-plsql developer連接數(shù)據(jù)庫方法 PHP中防止SQL注入攻擊 PHP會話Session的具體使用方法解析 PHP運行出現(xiàn)Notice : Use of undefined constant 的解決辦法 PHP如何清空mySQL數(shù)據(jù)庫 CakePHP程序員必須知道的21條技巧 PHP采集圖片實例(PHP采集)