phphtml頁面中文亂碼如何解決

本文小編為大家詳細(xì)介紹“php html頁面中文亂碼如何解決”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“php html頁面中文亂碼如何解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

10年的安次網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整安次建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“安次網(wǎng)站設(shè)計”,“安次網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

php html頁面中文亂碼問題的解決辦法:1、在前端通過“”設(shè)置整個頁面的字符編碼;2、在php中通過“header("content-type:text/html; charset=xxx");”設(shè)置字符即可。

前端網(wǎng)頁、php與MySQL數(shù)據(jù)庫字符編碼(解決中文等亂碼問題

web開發(fā)中經(jīng)常涉及前端網(wǎng)頁——php——mysql之間的數(shù)據(jù)交互,當(dāng)數(shù)據(jù)只有英文時通常不會有什么問題,但一旦涉及中文,三個地方的某一處字符編碼不一致(如,網(wǎng)頁使用的時gbk而mysql使用utf-8)就有可能導(dǎo)致亂碼的出現(xiàn)。

前端網(wǎng)頁編碼:

通常我們都認(rèn)為可以通過<head>標(biāo)簽內(nèi)的<meta>項(如<META http-equiv="content-type" content="text/html; charset=xxx">)來設(shè)置整個頁面的字符編碼。大部分頁面可以采用這種方式來告訴瀏覽器顯示這個頁面的時候采用什么編碼,但是有的時候我們會發(fā)現(xiàn)有了這句還是不行,不管xxx是哪一種,瀏覽器采用的始終都是一種編碼。

這種情況涉及到http協(xié)議通信中的頭部(header)部分,實際上,用戶瀏覽網(wǎng)頁時,服務(wù)器發(fā)送給用戶的內(nèi)容不僅包括我們的網(wǎng)頁(包括html/css/js這些代碼內(nèi)容),還包括被稱為頭部(header)的描述性內(nèi)容,這些內(nèi)容會告知客戶端將要接收的數(shù)據(jù)的類型(是html還是純文本還是多媒體文件等)、大小、來源等信息(如果想要看一下這些信息,可以使用telnet工具(而不是通過瀏覽器)按照http協(xié)議自己發(fā)起get等請求試試)。由于頭部是優(yōu)先于html發(fā)送的,<meta>作為html的一部分其優(yōu)先級也低于頭部,如果在頭部中已經(jīng)包含了有關(guān)網(wǎng)頁字符編碼的描述,瀏覽器最終就會按頭部中說明的字符編碼集來解析網(wǎng)頁。

在php中,可以使用 header("content-type:text/html; charset=xxx"); 來發(fā)送關(guān)于字符集的頭部。

而對于apache服務(wù)器來說,它具有一個AddDefaultCharset的功能,也就是會為每個發(fā)送的網(wǎng)頁按照服務(wù)器默認(rèn)的字符集設(shè)定好對應(yīng)頭部。

查看/etc/apache2/httpd.conf(2.4之前)或/etc/apache2/conf-available/charset.conf(2.4及以后),里面有一句AddDefaultCharset xxx如果這一句未處于注釋狀態(tài),那么為每個網(wǎng)頁添加默認(rèn)字符集頭部的功能就處于開啟狀態(tài),此時單獨設(shè)置<meta>標(biāo)簽里的字符集便沒有效果。

注意:html頁面所標(biāo)明的編碼方式應(yīng)該與實際在編寫html頁面(其實就是純文本)時保存所用的編碼方式一致。

一般而言,為了兼容中文甚至更多的其它語言,使用utf-8編碼方式是最省事的一種方式,因為utf-8幾乎支持世界上的所有常用語言。

mysql數(shù)據(jù)庫編碼:

在終端下mysql -uusername -ppassword 后進入mysql的控制程序,再鍵入show variables like 'character%'; (注意往mysql終端中鍵入命令語句或sql語句時分號不可以省略)可以看到類似下圖:

php html頁面中文亂碼如何解決

上面列舉了mysql在各個層面上所使用的字符集,其中(*)

character-set-server/default-character-set:服務(wù)器字符集,默認(rèn)情況下所采用的。
character-set-database:數(shù)據(jù)庫字符集。
character-set-table:數(shù)據(jù)庫表字符集。
優(yōu)先級依次增加。所以一般情況下只需要設(shè)置character-set-server,而在創(chuàng)建數(shù)據(jù)庫和表時不特別指定字符集,這樣統(tǒng)一采用character-set-server字符集。
character-set-client:客戶端的字符集。客戶端默認(rèn)字符集。當(dāng)客戶端向服務(wù)器發(fā)送請求時,請求以該字符集進行編碼。
character-set-results:結(jié)果字符集。服務(wù)器向客戶端返回結(jié)果或者信息時,結(jié)果以該字符集進行編碼。
在客戶端,如果沒有定義character-set-results,則采用character-set-client字符集作為默認(rèn)的字符集。所以只需要設(shè)置character-set-client字符集。

于是我們會發(fā)現(xiàn),上圖所示的character-set-server使用的不是utf8(注:在mysql中,utf-8編碼方式的表示為utf8,沒有“-”)。這是因為mysql默認(rèn)的存儲方式在沒有修改的情況下就是latin1。在這種情況下,我們在使用mysql終端進行創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表的操作時,若在sql語句中沒有指定所使用字符集,那么存儲時使用的編碼方式就會是latin1,明顯,中文存放在這種本來用于存放拉丁文的編碼方式下顯示出來肯定是亂碼。

那么怎么修改它呢,可以使用set character-set-server = utf8;(由于character-set-server優(yōu)先級高,只修改它即可達(dá)到修改數(shù)據(jù)庫存儲編碼方式的效果)。此后在終端里使用sql建表時表的存儲編碼方式即是utf-8。

但是,這個修改只對當(dāng)前服務(wù)有效,使用quit;退出后再次進入mysql終端就會發(fā)現(xiàn)字符集又變回了latin1了。想要使修改永久生效的方法我目前找到的資料顯示只有通過重新編譯mysql時修改編譯參數(shù)達(dá)到,如果有高手知道怎么不通過編譯實現(xiàn)煩請留言告知。

php編碼:

那么,說到了mysql,php在和mysql進行交互時要怎么保證傳輸數(shù)據(jù)過程中不出現(xiàn)亂碼呢?

按照(*)處的描述,實際上,為了使得存入mysql和從mysql中取出數(shù)據(jù)時不出現(xiàn)亂碼,我們只要使得以下三個系統(tǒng)參數(shù)設(shè)置為與服務(wù)器字符集character-set-server相同的字符集。 他們是:
character_set_client:客戶端的字符集。
character_set_results:結(jié)果字符集。
character_set_connection:連接字符集。
設(shè)置這三個系統(tǒng)參數(shù)可以通過向MySQL發(fā)送語句:set names xxx (xxx可以是utf8)來實現(xiàn)

因此,當(dāng)涉及從php往mysql發(fā)送中文等非英文字符時,在mysql_connect語句后使用mysql_query("set names utf8");語句(這里假設(shè)數(shù)據(jù)庫存儲用的是utf8)后就可以放心傳送和取回中文了。

此外,由于html頁面實際上也可能由php動態(tài)生成,怎么保證php動態(tài)生成的頁面所使用的編碼方式和頭部或<meta>里聲明的一樣呢?

在php目錄下找到php.ini文件修改default_charset = "utf-8“即可使得php在輸出頁面時使用utf-8來編碼。

讀到這里,這篇“php html頁面中文亂碼如何解決”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:phphtml頁面中文亂碼如何解決
文章網(wǎng)址:http://bm7419.com/article6/psdhig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、商城網(wǎng)站、建站公司、網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)站設(shè)計公司

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)