php html頁面中文亂碼問題的解決辦法:1、在前端通過“”設置整個頁面的字符編碼;2、在php中通過“header("content-type:text/html; charset=xxx");”設置字符即可。
本教程操作環(huán)境:Windows10系統(tǒng)、PHP8.1版、DELL G3電腦
php html頁面中文亂碼問題怎么解決?
前端網頁、php與mysql數(shù)據庫字符編碼(解決中文等亂碼問題
web開發(fā)中經常涉及前端網頁——php——mysql之間的數(shù)據交互,當數(shù)據只有英文時通常不會有什么問題,但一旦涉及中文,三個地方的某一處字符編碼不一致(如,網頁使用的時gbk而mysql使用utf-8)就有可能導致亂碼的出現(xiàn)。
(注:關于字符編碼請參見百度百科:http://baike.baidu.com/view/1204863.htm?fr=aladdin)
前端網頁編碼:
通常我們都認為可以通過<head>標簽內的<meta>項(如<META http-equiv="content-type" content="text/html; charset=xxx">)來設置整個頁面的字符編碼。大部分頁面可以采用這種方式來告訴瀏覽器顯示這個頁面的時候采用什么編碼,但是有的時候我們會發(fā)現(xiàn)有了這句還是不行,不管xxx是哪一種,瀏覽器采用的始終都是一種編碼。
這種情況涉及到http協(xié)議通信中的頭部(header)部分,實際上,用戶瀏覽網頁時,服務器發(fā)送給用戶的內容不僅包括我們的網頁(包括html/css/js這些代碼內容),還包括被稱為頭部(header)的描述性內容,這些內容會告知客戶端將要接收的數(shù)據的類型(是html還是純文本還是多媒體文件等)、大小、來源等信息(如果想要看一下這些信息,可以使用telnet工具(而不是通過瀏覽器)按照http協(xié)議自己發(fā)起get等請求試試)。由于頭部是優(yōu)先于html發(fā)送的,<meta>作為html的一部分其優(yōu)先級也低于頭部,如果在頭部中已經包含了有關網頁字符編碼的描述,瀏覽器最終就會按頭部中說明的字符編碼集來解析網頁。
在php中,可以使用 header("content-type:text/html; charset=xxx"); 來發(fā)送關于字符集的頭部。
而對于apache服務器來說,它具有一個AddDefaultCharset的功能,也就是會為每個發(fā)送的網頁按照服務器默認的字符集設定好對應頭部。
查看/etc/apache2/httpd.conf(2.4之前)或/etc/apache2/conf-available/charset.conf(2.4及以后),里面有一句AddDefaultCharset xxx如果這一句未處于注釋狀態(tài),那么為每個網頁添加默認字符集頭部的功能就處于開啟狀態(tài),此時單獨設置<meta>標簽里的字符集便沒有效果。
注意:html頁面所標明的編碼方式應該與實際在編寫html頁面(其實就是純文本)時保存所用的編碼方式一致。
一般而言,為了兼容中文甚至