這種情況發(fā)生在以UTF-8編碼格式傳輸數(shù)據(jù)的時(shí)候,這開(kāi)頭的三個(gè)字節(jié)叫做BOM(Byte Order Mark,字節(jié)順序標(biāo)記),小程序接收到php端返回的數(shù)據(jù)后,把開(kāi)頭的三個(gè)字節(jié)去掉即可。
創(chuàng)新互聯(lián)建站主營(yíng)民和網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app開(kāi)發(fā)定制,民和h5微信小程序定制開(kāi)發(fā)搭建,民和網(wǎng)站營(yíng)銷(xiāo)推廣歡迎民和等地區(qū)企業(yè)咨詢(xún)
更徹底的解決辦法是把php文件保存為?不帶BOM的UTF-8?文件,這樣返回的數(shù)據(jù)就不帶BOM了
解決php中中文亂碼問(wèn)題方法
php文件本身的編碼與網(wǎng)頁(yè)的編碼應(yīng)匹配
a. 如果欲使用gb2312編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=gb2312"),靜態(tài)頁(yè)面添加meta?http-equiv="Content-Type" content="text/html; charset=gb2312",所有文件的編碼格式為ANSI,可用記事本打開(kāi),另存為選擇編碼為ANSI,覆蓋源文件。
b. 如果欲使用utf-8編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=utf-8"),靜態(tài)頁(yè)面添加meta?http-equiv="Content-Type" content="text/html; charset=utf-8",所有文件的編碼格式為utf-8。保存為utf-8可能會(huì)有點(diǎn)麻煩,一般utf-8文件開(kāi)頭會(huì)有BOM,如果使用session就會(huì)出問(wèn)題,可用editplus來(lái)保存,在editplus中,工具-參數(shù)選擇-文件-UTF-8簽名,選擇總是刪除,再保存就可以去掉BOM信息了。
php本身不是Unicode的,所有substr之類(lèi)的函數(shù)得改成mb_substr(需要裝mbstring擴(kuò)展);或者用iconv轉(zhuǎn)碼。
如果你的HTML文件文件出現(xiàn)了亂碼問(wèn)題,那么你可以在head標(biāo)簽里面加入U(xiǎn)TF8編碼(國(guó)際化編碼):UTF-8是沒(méi)有國(guó)家的編碼,也就是獨(dú)立于任何一種語(yǔ)言,任何語(yǔ)言都可以使用的。
擴(kuò)展資料:
解決PHP 輸出簡(jiǎn)單的中文 亂碼問(wèn)題的其他方法:
在php的echo前面加入header("Content-Type:text/html;charset=gb2312")
把meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /中的UTF-8改成gb2312
參考資料:
百度百科-PHP
返回亂碼需要在PHP文件中設(shè)置下字符集,在代碼開(kāi)始前寫(xiě)上這一句header('Content-type: text/html; charset=utf-8');
如果是數(shù)據(jù)庫(kù)查詢(xún)出現(xiàn)亂碼,那么在數(shù)據(jù)庫(kù)連接的時(shí)候也要設(shè)置字符集,mysqli_set_charset(數(shù)據(jù)庫(kù)連接,'utf8');