PHP中怎么實現(xiàn)數(shù)據(jù)庫編碼

這篇文章將為大家詳細講解有關PHP中怎么實現(xiàn)數(shù)據(jù)庫編碼,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

成都網(wǎng)站設計、做網(wǎng)站過程中,需要針對客戶的行業(yè)特點、產(chǎn)品特性、目標受眾和市場情況進行定位分析,以確定網(wǎng)站的風格、色彩、版式、交互等方面的設計方向。創(chuàng)新互聯(lián)公司還需要根據(jù)客戶的需求進行功能模塊的開發(fā)和設計,包括內(nèi)容管理、前臺展示、用戶權限管理、數(shù)據(jù)統(tǒng)計和安全保護等功能。

PHP頁面編碼怎么實現(xiàn)

1.使用標簽設置頁面編碼

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

請注意,是屬于html信息的,僅僅是一個聲明,它起作用表明服務器已經(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標頭是服務器以HTTP協(xié)議傳送HTML信息到瀏覽器前所送出的字串。

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

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

3.AddDefaultCharset

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

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

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

總結:

來個排序

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

AddDefaultCharsetxxx

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

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

PHP數(shù)據(jù)庫編碼怎么實現(xiàn)

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

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

PHP頁面編碼統(tǒng)一

MySQL數(shù)據(jù)庫編碼、html頁面編碼、PHP或html文件本身編碼要全部一致。

1、MySQL數(shù)據(jù)庫編碼:建立數(shù)據(jù)庫時指定編碼(如gbk_chinese_ci),建立數(shù)據(jù)表、建立字段、插入數(shù)據(jù)時不要指定編碼,會自動繼承數(shù)據(jù)庫的編碼。

數(shù)據(jù)庫連接時,也有編碼,可以在連接完數(shù)據(jù)庫后,執(zhí)行

mysql_query(‘SETNAMESgbk’);//將gbk換成你的編碼,如utf8。

2、html頁面的編碼,指的是這一行的設置:

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

4、另外要注意的是,Javascript或Flash中傳遞的數(shù)據(jù)是utf-8編碼,假如數(shù)據(jù)庫和頁面編碼是gbk,要進行轉(zhuǎn)碼,然后寫入數(shù)據(jù)庫。

iconv(‘utf-8′,‘gbk’,$content);

5、在PHP程序中,可以加上一行,來指定PHP源程序的編碼:

header(‘Content-type:text/html;charset=gbk’)。

關于PHP中怎么實現(xiàn)數(shù)據(jù)庫編碼就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

標題名稱:PHP中怎么實現(xiàn)數(shù)據(jù)庫編碼
轉(zhuǎn)載來于:http://bm7419.com/article36/gejcsg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務、Google、動態(tài)網(wǎng)站、域名注冊、企業(yè)網(wǎng)站制作定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設