php數(shù)據(jù)庫(kù)操作之?dāng)?shù)據(jù)顯示亂碼終極解決辦法
php連接mysql亂碼是開(kāi)發(fā)過(guò)程當(dāng)中,這是開(kāi)發(fā)中新手經(jīng)常遇到的問(wèn)題。 根據(jù)實(shí)際大家遇到的問(wèn)題,將亂碼的問(wèn)題,總結(jié)成了9個(gè)要點(diǎn)來(lái)徹底解決連接后亂碼的問(wèn)題。
解決亂碼問(wèn)題的核心思想,就是:一定要多個(gè)不同的文件系統(tǒng)中一定要統(tǒng)一編碼。
這9個(gè)要點(diǎn)分別是:
1.html編碼與MySQL編碼一致
2.PHP編碼與MySQL編碼一致
3.若有header頭發(fā)送字符集,請(qǐng)與數(shù)據(jù)庫(kù)一樣
4.<meta http-equiv=“Content-Type”content=“text/html; charset=utf-8” />要和頁(yè)面的文字編碼一致
5.數(shù)據(jù)庫(kù)建庫(kù)的字符集要統(tǒng)一
6.表的字符集要統(tǒng)一
7.列的字符集要統(tǒng)一(表設(shè)了,列就默認(rèn)寫(xiě)表的)
8.連接,校驗(yàn)的字符集要統(tǒng)一
9.結(jié)果集的字符集要統(tǒng)一
一,文件編碼
html和PHP文件的編碼,示例中:拿notepad++來(lái)演示。將PHP和html都要設(shè)為這種字符集。
一定要設(shè)置為utf-8無(wú)BOM格式。
二、header頭編碼
如果php中有header頭,一定要是utf-8的
header('content-type:text/html;charset=utf-8');
三、網(wǎng)頁(yè)頭文件編碼
如果html文件編碼是utf-8的也要設(shè)置為一置
<meta http-equiv=“Content-Type”content=“text/html; charset=utf-8” />
四、創(chuàng)建數(shù)據(jù)庫(kù)的編碼
五、表和列創(chuàng)建的時(shí)候表為utf-8
六、連接,結(jié)果、校驗(yàn)字符集設(shè)置
通過(guò)mysqli_set_charset('utf8')來(lái)MySQL連接、結(jié)果和校驗(yàn)的字符集設(shè)置。
注:數(shù)據(jù)庫(kù)的字符集聲明和文件中的略有不同。utf8為mysql數(shù)據(jù)庫(kù)的,utf-8為文件中使用的。