溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php都是亂碼的解決方法

發(fā)布時(shí)間:2020-09-04 11:26:34 來(lái)源:億速云 閱讀:283 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下php都是亂碼的解決方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

php亂碼的解決辦法:1、設(shè)置數(shù)據(jù)庫(kù)和保存文件的編碼為“utf8”;2、保存文件時(shí)修改編碼;3、使用“mb_convert_encoding”函數(shù)進(jìn)行轉(zhuǎn)碼;4、設(shè)置數(shù)據(jù)庫(kù)的存儲(chǔ)編碼為“utf8”。

php都是亂碼的解決方法

PHP出現(xiàn)亂碼,解決亂碼的方法

一,出現(xiàn)亂碼的原因分析

1,保存文件時(shí)候,文件有自己的文件編碼,就是漢字,或者其他國(guó)語(yǔ)言,以什么編碼來(lái)存儲(chǔ)

2,輸出的時(shí)候,要給內(nèi)容指定編碼,如以網(wǎng)頁(yè)的形勢(shì)輸入時(shí)<meta http-equiv=”Content-Type” content=”text/html; charset=utf8″ />

3,從數(shù)據(jù)庫(kù)取出數(shù)據(jù)時(shí),搞不清楚數(shù)據(jù)庫(kù),設(shè)置的字符集

4,以漢字為例,漢字本來(lái)也有編碼的,一個(gè)漢字gbk要二個(gè)字符,而utf8要三個(gè)字符

上面說(shuō)了有可能引起亂碼的潛在原因,我現(xiàn)在把它們排列組合一下。

第一種情況,保存文件和顯示編碼的不一致

假如保存文件時(shí)候,你用的utf8編碼,網(wǎng)頁(yè)輸出時(shí),你設(shè)置的是gbk編碼,這樣就會(huì)出現(xiàn)亂碼,

第二種情況,保存文件和數(shù)據(jù)庫(kù)的存儲(chǔ)的字符不一致

假如,保存文件的編碼和網(wǎng)頁(yè)顯示的編碼一樣時(shí),還是出現(xiàn)亂碼了,例如,你保存文件時(shí),用的utf8編碼,而你數(shù)據(jù)庫(kù)用的是gb2312字符集來(lái)存儲(chǔ)數(shù)據(jù)。

第三種情況,已經(jīng)亂碼了,你還認(rèn)為沒(méi)有

當(dāng)你發(fā)現(xiàn)出現(xiàn)亂碼時(shí),去改變保存文件的編碼的時(shí)候,utf8情況是好的,當(dāng)你把它換成gbk的話就亂碼了,但是你還以為是好的。這也是出現(xiàn)亂碼的原因。這種情況會(huì)經(jīng)常出現(xiàn)。

第四種情況,數(shù)據(jù)庫(kù)里面本來(lái)就是亂碼

數(shù)據(jù)的字符集,保存文件的編碼,網(wǎng)頁(yè)顯示編碼都一樣了,還是出現(xiàn)亂碼了,這種情況大多數(shù),是數(shù)據(jù)入數(shù)據(jù)庫(kù)的時(shí)候,就亂碼了,這種情況是比較麻煩的。

二,我解決亂碼的方法,百試不爽

我把這種方法起個(gè)名子叫庖丁解牛法。哈哈。數(shù)據(jù)庫(kù),保存文件編碼,顯示時(shí)候的編碼必須一致,并且以數(shù)據(jù)庫(kù)為準(zhǔn)

第一種,數(shù)據(jù)庫(kù)和保存文件的編碼是utf8,網(wǎng)頁(yè)顯示呢是gb2312,這個(gè)時(shí)候,我們就要改顯示編碼了<meta http-equiv=”Content-Type” content=”text/html; charset=utf8″ />

第二種,數(shù)據(jù)庫(kù)和網(wǎng)頁(yè)顯示都是utf8,保存文件用的是gb2312,這個(gè)時(shí)候呢,要注意一種,直接把保存文件的編碼改過(guò),是不行的,在改編碼之前,把文件的內(nèi)容先COPY一下,編碼改過(guò)以后,在把剛才COPY的內(nèi)容粘回去,這樣就OK了.

第三種,數(shù)據(jù)庫(kù)用的utf8,保存文件和顯示編碼是gb2312,這個(gè)時(shí)候呢,你可以用程序自帶的函數(shù)把從數(shù)據(jù)庫(kù)取出的數(shù)據(jù)進(jìn)行一下轉(zhuǎn)碼把,utf8轉(zhuǎn)成gb2312這樣就不用去改變文件自己的編碼了,以及顯示編碼了。以php為例,mb_convert_encoding($string,”gb2312″,”utf8″);

第四種,數(shù)據(jù)庫(kù)亂碼,是數(shù)據(jù)錄入時(shí)候,數(shù)據(jù)本身和數(shù)據(jù)庫(kù)存儲(chǔ)編碼不一樣造成的。例如:數(shù)據(jù)庫(kù)的存儲(chǔ)編碼是utf8,在數(shù)據(jù)入庫(kù)的時(shí)候,加上一個(gè)mysql_query(“set names utf8;”);

三,亂碼表現(xiàn)的形勢(shì)

亂碼的表現(xiàn)呢,我是遇到過(guò)二個(gè),

1)就是出現(xiàn)在的字體亂碼了,變成怪七怪八的字符了

2)就是直接是空白頁(yè)面,查看源碼呢,什么都沒(méi)有,像這種情況,有的時(shí)候,很想起是因?yàn)槭莵y碼造成的。右擊頁(yè)面在,查看屬性,改一下編碼就知道是不是因?yàn)閬y碼引起的空白頁(yè)面了。

以上是php都是亂碼的解決方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI