新聞中心
在PHP連接MYSQL數(shù)據(jù)庫(kù)時(shí),有時(shí)會(huì)遇到亂碼的情況,下面就將教您如何解決PHP連接MYSQL亂碼問(wèn)題的方法,供您參考學(xué)習(xí)。

創(chuàng)新互聯(lián)建站長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為沽源企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站建設(shè),沽源網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
要解決PHP頁(yè)面亂碼,首先就要了解PHP連接MYSQL亂碼的原因
1.架設(shè)服務(wù)器安裝MYSQL時(shí)的會(huì)讓你選擇一種編碼,如果這種編碼與你的PHP網(wǎng)頁(yè)不一致,可能就會(huì)造成亂碼
2.在PHPMYADMIN或mysql-front等系統(tǒng) 創(chuàng)建數(shù)據(jù)庫(kù)時(shí)會(huì)讓你選擇一種編碼,如果這種編碼與你的PHP網(wǎng)頁(yè)不一致,也有可能造成PHP頁(yè)面亂碼
3.創(chuàng)建表時(shí)會(huì)讓你選擇一種編碼,如果這種編碼與你的網(wǎng)頁(yè)編碼不一致,也可能造成PHP頁(yè)面亂碼
4.創(chuàng)建表時(shí)添加字段是可以選擇編碼的,如果這種編碼與你的網(wǎng)頁(yè)編碼不一致,也可能造成PHP頁(yè)面亂碼
5.用戶提交頁(yè)面的編碼與顯示數(shù)據(jù)的頁(yè)面編碼不一致,就肯定會(huì)造成PHP頁(yè)面亂碼.
如用戶輸入資料的頁(yè)面是big5碼, 顯示用戶輸入的頁(yè)面卻是gb2312,這種100%會(huì)造成PHP頁(yè)面亂碼
6.PHP頁(yè)面字符集不正確
要注意:
平時(shí)你在某些網(wǎng)站看到的文字可能有幾種編碼, 如你看到一個(gè)繁體字,它有可能是big5編碼,也有 可能是utf-8編碼的,更有可能是gb碼的,沒(méi)錯(cuò),也就是說(shuō)有簡(jiǎn)體編碼的繁體字,也有繁體編碼的簡(jiǎn)體字,一定要了解這一點(diǎn).
如果你是做一個(gè)簡(jiǎn)體編碼的網(wǎng)頁(yè),編碼定為GB2312,如果有香港和臺(tái)灣地區(qū)的訪客提交繁體的信息,就可能會(huì)造成亂碼,解決方法就是(1)將網(wǎng)站編碼設(shè)為utf-8,這樣可以兼容世界上所有字符, (2)如果網(wǎng)站已經(jīng)運(yùn)作了好久,已有很多舊數(shù)據(jù),不能再更改簡(jiǎn)體中文的設(shè)定,那么建議將頁(yè)面的編碼設(shè)為GBK,
GBK與GB2312的區(qū)別就在于:GBK能比GB2312顯示更多的字符,要顯示簡(jiǎn)體碼的繁體字,就只能用GBK
7.PHP連接MYSQL數(shù)據(jù)庫(kù)語(yǔ)句指定的編碼不正確
所以,PHP連接MYSQL亂碼的原因無(wú)非就是以上幾種,知道原因之后,要解決PHP頁(yè)面亂碼的方法也容易多了
我們一一來(lái)表達(dá):
1.如果安裝mysql的編碼已不能更改,很多朋友是購(gòu)買虛擬主機(jī)建立網(wǎng)站,無(wú)權(quán)更改MYSQL的安裝編碼,這一關(guān)我們可以跳過(guò),因?yàn)橹灰竺娴牟骄壅_,一樣能解決PHP連接MYSQL亂碼問(wèn)題
2.修改數(shù)據(jù)庫(kù)編碼,如果是數(shù)據(jù)庫(kù)編碼不正確: 可以在phpmyadmin 執(zhí)行如下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是將test數(shù)據(jù)庫(kù)的編碼設(shè)為utf8
3.修改表的編碼:ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是將一個(gè)表category的編碼改為utf8
4.修改字段的編碼:
ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
以上命令就是將test表中 dd的字段編碼改為utf8
5.如果是這種情況容易解決,只需檢查下頁(yè)面,修改源文件的charset即可
6.這種情況也是修改頁(yè)面charset即可
7.在連接數(shù)據(jù)庫(kù)的語(yǔ)句中,
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
mysql_query("set names utf8;"); //select 數(shù)據(jù)庫(kù)之后加多這一句
為了避免PHP頁(yè)面亂碼的發(fā)生,PHP頁(yè)面開(kāi)始***句
header("content-type:text/html; charset=utf-8");
//強(qiáng)行指定頁(yè)面的編碼,以避免亂碼
【編輯推薦】
教您如何設(shè)置MySql訪問(wèn)限制
MySQL修改密碼的六種方法
linux下的常用mysql命令
九種常用mysql命令
MySQL自增字段的常用語(yǔ)句
新聞標(biāo)題:教您如何解決PHP連接MYSQL亂碼的問(wèn)題
本文URL:http://m.5511xx.com/article/cdiepgi.html


咨詢
建站咨詢
