php頁面為utf編碼 header("Content-type: text/html; charset=utf-8");

php頁面為gbk編碼 header("Content-type: text/html; charset=gb2312");

php頁面為big " /> 亚洲综合九九,波多野结衣亚洲,精品视频一区在线观看

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP 頁面編碼聲明方法詳解(header或meta)

php的header來定義一個php頁面為utf編碼或GBK編碼

php頁面為utf編碼
header("Content-type: text/html; charset=utf-8");

php頁面為gbk編碼
header("Content-type: text/html; charset=gb2312");

php頁面為big5編碼
header("Content-type: text/html; charset=big5");

通常情況以上代碼放在php頁面的首頁

用header或meta實現php頁面編碼的區別
一、頁面編碼

1. 使用 <META http-equiv="content-type" content="text/html; charset=xxx"> 標簽設置頁面編碼

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

請注意,<meta>是屬于html信息的,僅僅是一個聲明,它起作用表明服務器已經把HTML信息傳到了瀏覽器。

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

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

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

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

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

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

3. AddDefaultCharset

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

用文本編輯器打開httpd.conf,第708行(不同版本可能不同)有AddDefaultCharset xxx,xxx為編碼名稱。這行代碼的意思:設置整個服務器內的網頁文件https標頭里的字符集為你默認的xxx字符集。有這行,就相當于給每個文件都 加了一行header("content-type:text/html; charset=xxx")。這下就明白為什么明明meta設置了是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
<META http-equiv="content-type" content="text/html; charset=xxx">
如果你是web程序員,給你的每個頁面都加個header("content-type:text/html; charset=xxx"),保證它在任何服務器都能正確顯示,可移植性強。

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

二、數據庫編碼

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

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

php頁面編碼統一

MySQL數據庫編碼、html頁面編碼、php或html文件本身編碼要全部一致。
  1、MySQL數據庫編碼:建立數據庫時指定編碼(如gbk_chinese_ci),建立數據表、建立字段、插入數據時不要指定編碼,會自動繼承數據庫的編碼。
數據庫連接時,也有編碼,可以在連接完數據庫后,執行
mysql_query('SET NAMES gbk');//將gbk換成你的編碼,如utf8。

  2、html頁面的編碼,指的是這一行的設置:
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />

  3、php或html文件本身的編碼:用editplus打開php文件或html文件,另存時,選擇的編碼,如果數據庫和頁面編碼是gbk,則這兒的編碼選擇ansi;如果數據庫和頁面編碼是utf-8,則這兒也選擇utf-8。

  4、另外要注意的是,Javascript或Flash中傳遞的數據是utf-8編碼,如果數據庫和頁面編碼是gbk,要進行轉碼,然后寫入數據庫。
iconv('utf-8', 'gbk', $content);

5、在php程序中,可以加上一行,來指定php源程序的編碼:
header('Content-type: text/html; charset=gbk');

php技術PHP 頁面編碼聲明方法詳解(header或meta),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 色米奇777 | 亚洲欧美在线综合一区二区三区 | 中文字幕一区二区三区有限公司 | www.成人在线视频 | 在线观看精品视频一区二区三区 | 视频黄色在线 | 国内精品手机在线观看视频 | 久久婷婷五色综合夜啪 | 久久综合亚洲鲁鲁五月天欧美 | 亚洲综合伊人色一区 | 狠狠干综合 | 黄色大片网站在线观看 | 国产日韩精品欧美一区喷 | 亚洲成人一区二区 | 国产精品伦理一区二区三区 | 青青草色久综合网 | 婷婷深爱 | 天天拍天天色 | 亚洲国产精品久久久天堂麻豆 | 一区二区三区不卡在线观看 | 久久精品视频2 | 亚洲最大综合网 | 四虎精品免费永久在线 | 国产亚洲高清在线精品99 | 狠狠婷婷| 天天摸天天看天天爽 | 色婷婷丁香六月 | 美女胸免费视频网站 | 久久免费视屏 | 免费看的www视频网站视频 | 很黄很暴力深夜爽爽无遮挡 | 黄色视屏免费看 | 日韩ab| 国产精品社区 | 色呦呦网 | 久久国产美女 | 亚洲精品女同中文字幕在线 | 日本视频www色变态 日本视频网站在线www色 | 久久久久久久久久免观看 | 国产精品视频免费播放 | 美女一级ba大片免色无遮住 |