MySQL亂碼問(wèn)題與其實(shí)際解決辦法
可以說(shuō)http://database.51cto.com/art/200511/12568.htm4.1的應(yīng)用 ,對(duì)多語(yǔ)言的相關(guān)支持有十分大的變化,很多人都遇到過(guò)令人頭痛的MySQL亂碼問(wèn)題,以下的文章主要就是對(duì)MySQL亂碼問(wèn)題的解決,希望會(huì)給你帶來(lái)一些幫助在此實(shí)際應(yīng)用方面。
在升級(jí)數(shù)據(jù)庫(kù)或者將本地的數(shù)據(jù)導(dǎo)入到虛擬主機(jī)后,突然發(fā)現(xiàn)之前整齊的頁(yè)面布滿了各種奇怪的符號(hào)。
本站特開(kāi)辟此專題,介紹各種情況下出現(xiàn)亂碼的原因及其解決辦法,文章將不定期更新,敬請(qǐng)關(guān)注!
小標(biāo)題:
常見(jiàn)容易導(dǎo)致頁(yè)面亂碼的幾個(gè)情況說(shuō)明
不同字符集數(shù)據(jù)表轉(zhuǎn)換出現(xiàn)亂碼的解決辦法
如果你遇到MySQL亂碼問(wèn)題,可以從下面幾個(gè)問(wèn)題逐步檢查:
(1)檢查你的文件存儲(chǔ)編碼是否和 meta 聲明的一致,假如你的文件是按照 utf-8 編碼存儲(chǔ),但是 meta 卻聲明為 gb2312 ,將導(dǎo)致亂碼。
解決辦法:將頁(yè)面存儲(chǔ)編碼和 meta 聲明保持一致。用記事本打開(kāi)文件,“另存為”,下面有個(gè)選項(xiàng)是“編碼”,選擇和 meta 聲明一致的編碼方式。(提示:meta 的編碼聲明要放在 title 標(biāo)簽前面,否則容易導(dǎo)致頁(yè)面空白。)
(2)檢查你的數(shù)據(jù)庫(kù)連接有沒(méi)有設(shè)置連接方式(SET NAMES),MySQL 4.1 版本以后,如果你沒(méi)有設(shè)置數(shù)據(jù)庫(kù)連接方式,那么插入或者查詢將出現(xiàn)亂碼情況。
解決辦法:在你的數(shù)據(jù)庫(kù)連接后面(通常是在 mysql_connect 后面,執(zhí)行任何查詢之前)加上一句 :
- Code:
- mysql_query("SET NAMES utf8");
其中 utf8 需要根據(jù)你需要設(shè)置。
(3)檢查你的頁(yè)面編碼、meta 聲明、數(shù)據(jù)庫(kù)連接方式(SET NAMES)是否一致,如果你的頁(yè)面和meta設(shè)置為gb2312,但是卻在程序中設(shè)置 SET NAMES utf8,同樣會(huì)導(dǎo)致亂碼。原因是如果頁(yè)面設(shè)置為 gb2312 ,那么表單中的數(shù)據(jù)也是按照 gb2312 提交,但是程序卻要求按照 utf8 去處理,結(jié)果自然是亂碼。
解決辦法:將頁(yè)面編碼、meta 聲明、數(shù)據(jù)庫(kù)連接方式(SET NAMES)保持一致,當(dāng)然這里說(shuō)的一致不是絕對(duì)的,如 MySQL 的 utf8 和頁(yè)面中的 utf-8 是不一樣的,具體要根據(jù)你的實(shí)際情況設(shè)置。
以上的相關(guān)內(nèi)容就是對(duì)MySQL 常見(jiàn)亂碼問(wèn)題的介紹,望你能有所收獲。
【編輯推薦】