新聞中心
php讀取mysql中文數(shù)據(jù)出現(xiàn)亂碼的解決方法
1.PHP頁面語言本身的編碼類型不合適,這時(shí)候,你直接在腳本中寫的中文肯定是亂碼,不用說數(shù)據(jù)庫了
創(chuàng)新互聯(lián)公司一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、移動(dòng)互聯(lián)產(chǎn)品、成都營銷網(wǎng)站建設(shè)服務(wù)為核心業(yè)務(wù)。十余年網(wǎng)站制作的經(jīng)驗(yàn),使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價(jià)格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
解決方法:選擇'UTF8'或者'gb2312',這樣客戶瀏覽器會(huì)自動(dòng)選擇并出現(xiàn)正確的中文顯示。注意:'UTF8'或者'gb2312'都可以正確顯示中文的。
2.數(shù)據(jù)庫MySQL中的編碼類型不正確。
解決方法:創(chuàng)建數(shù)據(jù)庫的時(shí)候,MySQL
字符集選擇'UTF8',MySQL
連接校對(duì)選擇utf8_general_ci,這樣創(chuàng)建的數(shù)據(jù)庫用來存儲(chǔ)中文肯定沒有問題,
否則,你的中文首先在MySQL中就是亂碼,更不要期望它會(huì)給你在PHP頁面中顯示正確。
3.與平時(shí)的腳本編輯環(huán)境有關(guān)。比如,有些內(nèi)容是自己用word寫的,有些是用記事本寫的,有些用editplus、ultraplus等文本編輯器。有時(shí)候就直接在DW中寫中文了,
解決方法:盡量用同一種編輯器。如果是拷貝來得既有的內(nèi)容,建議用ultraplus中的編碼轉(zhuǎn)換功能把它轉(zhuǎn)換成utf8或者gb2312。
到底轉(zhuǎn)換成什么類型并不重要,關(guān)鍵要求你的PHP
WEB應(yīng)用程序中的編碼要一致就行。
4.編程訪問
MySQL時(shí),建議添加一行代碼:mysql_query("SET
NAMES
'GBK'");
PHP顯示MySQL數(shù)據(jù)亂碼,字符集設(shè)置都是UTF8,數(shù)據(jù)庫也是UTF8,一直找不到問題在哪里,代碼見詳細(xì),求大神
php+mysql的utf-8中文亂碼問題的解決方法
問題匯總:
1.mysql數(shù)據(jù)庫默認(rèn)的編碼是utf8,如果這種編碼與你的PHP網(wǎng)頁不一致,可能就會(huì)造成MYSQL亂碼.
2.MYSQL中創(chuàng)建表時(shí)會(huì)讓你選擇一種編碼,如果這種編碼與你的網(wǎng)頁編碼不一致,也可能造成MYSQL亂碼.
3.MYSQL創(chuàng)建表時(shí)添加字段是可以選擇編碼的,如果這種編碼與你的網(wǎng)頁編碼不一致,也可能造成MYSQL亂碼.
4.用戶提交頁面的編碼與顯示數(shù)據(jù)的頁面編碼不一致,就肯定會(huì)造成PHP頁面亂碼.
5.如用戶輸入資料的頁面是big5碼, 顯示用戶輸入的頁面卻是gb2312,這種100%會(huì)造成PHP頁面亂碼.
6.PHP頁面字符集不正確.
7.PHP連接MYSQL數(shù)據(jù)庫語句指定的編碼不正確.
使用mysql+php產(chǎn)生亂碼的原因都了解得很清楚了,那么解決就不困難了.
針對(duì)不同問題的解決方法:
1.mysql數(shù)據(jù)庫默認(rèn)的編碼是utf8,如果這種編碼與你的PHP網(wǎng)頁不一致,可能就會(huì)造成MYSQL亂碼.
修改數(shù)據(jù)庫編碼,如果是數(shù)據(jù)庫編碼不正確,可以在phpmyadmin 執(zhí)行如下命令:
Alter DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是將test數(shù)據(jù)庫的編碼設(shè)為utf8.
2.MYSQL中創(chuàng)建表時(shí)會(huì)讓你選擇一種編碼,如果這種編碼與你的網(wǎng)頁編碼不一致,也可能造成MYSQL亂碼.
修改表的編碼:
Alter TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是將一個(gè)表category的編碼改為utf8.
3.MYSQL創(chuàng)建表時(shí)添加字段是可以選擇編碼的,如果這種編碼與你的網(wǎng)頁編碼不一致,也可能造成MYSQL亂碼.
修改字段的編碼:
Alter TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
以上命令就是將test表中 dd的字段編碼改為utf8.
4.用戶提交頁面的編碼與顯示數(shù)據(jù)的頁面編碼不一致,就肯定會(huì)造成PHP頁面亂碼.
如果是這種情況容易解決,只需檢查下頁面,修改源文件的charset即可.
5.如用戶輸入資料的頁面是big5碼, 顯示用戶輸入的頁面卻是gb2312,這種100%會(huì)造成PHP頁面亂碼.
這種情況也是修改頁面charset即可.
6.PHP頁面字符集不正確.
為了避免PHP頁面亂碼的發(fā)生,PHP頁面開始第一句
header("content-type:text/html; charset=utf-8");
//強(qiáng)行指定頁面的編碼,以避免亂碼
7.PHP連接MYSQL數(shù)據(jù)庫語句指定的編碼不正確.
在連接數(shù)據(jù)庫的語句中.
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
mysql_query("set names 'utf8'"); //select 數(shù)據(jù)庫之后加多這一句
php創(chuàng)建mysql數(shù)據(jù)庫時(shí)候如何設(shè)置字符集?
我來給你做一個(gè)綜合解釋吧。
在正常情況下。
PHP腳本 HTML 已經(jīng)瀏覽器 然后就是數(shù)據(jù)庫。
都有自己的字符集。何謂字符集。我想你如果是一個(gè)真正想熱衷于學(xué)PHP
那么你應(yīng)該花一定的時(shí)間去了解一下字符集的問題。
因?yàn)闊o論你以后做什么項(xiàng)目開發(fā)什么網(wǎng)站都是要牽涉到字符集。
就好比我做第一個(gè)項(xiàng)目。因?yàn)樽址愕乃廊セ顏怼?/p>
好進(jìn)入正題。怎么解決問題呢?
1.PHP的字符集。一般PHP網(wǎng)頁的是嵌套在html頁面以內(nèi)。那么如果在沒有沖突的情況下可以使用
header方面設(shè)置。比如?php header ... ?
2.HTML的字符集,一般是網(wǎng)頁的優(yōu)先字符集,這個(gè)問題是牽涉到你的網(wǎng)站是什么定位,比如:你的網(wǎng)站僅僅適合國內(nèi)的客戶。那么用gbk 或者gb2312.如果想老外也開湊湊熱鬧的話,就用utf-8.至于怎么設(shè)置這個(gè)字符集,你可以在meta這個(gè)標(biāo)記中看到。
3.數(shù)據(jù)庫的問題。mysql_query("set names gbk"); 這句話意思就是說,在操作數(shù)據(jù)庫的時(shí)候已這個(gè)字符集去讀寫。當(dāng)然這個(gè)字符集要對(duì)應(yīng)你的頁面的字符集哦。
4.瀏覽器。瀏覽器的問題是最萬惡的,因?yàn)槊總€(gè)瀏覽器默認(rèn)的是gb2312.當(dāng)然不同的瀏覽器是不同的。所以要想成為一名優(yōu)秀的程序員,寫出優(yōu)質(zhì)的代碼。你還得去了解每個(gè)瀏覽器的差別。當(dāng)然目前是不需要的,當(dāng)然這個(gè)問題你慢慢學(xué)習(xí)。寫代碼的過程中會(huì)慢慢了解到的。
你要做的就是將所有使用字符集確保一致性
問題就這些吧,如果有什么問題可以繼續(xù)問哦。凡是對(duì)PHP有熱情的人。我都會(huì)盡全力幫一下。哈哈。因?yàn)檫@個(gè)加物以類聚。還有這個(gè)內(nèi)容絕對(duì)不是復(fù)制粘貼的。
php輸出mysql中文亂碼問題?
mysqli_query($dbc, "SET NAMES UTF8");
你用mysqli鏈接的數(shù)據(jù)庫,所以必須用對(duì)應(yīng)函數(shù)執(zhí)行,而且編碼設(shè)置應(yīng)該緊跟你建立鏈接下面。
php5以后開始支持面向?qū)ο罅耍€用面向過程的寫法,以后升級(jí)很麻煩,這個(gè)是建議
PHP設(shè)置數(shù)據(jù)庫字符集
set names 'gbk' 是指設(shè)定 客戶端環(huán)境的編碼, 而不是指創(chuàng)建表的編碼. 要?jiǎng)?chuàng)建表的編碼, 就得
CREATE TABLE uu
(
id int;
) DEFAULT CHARSET='gbk';
php 怎么增加字符集ZHS16GBK
默認(rèn)編碼不一致造成問題
1、數(shù)據(jù)庫創(chuàng)建編碼選用一個(gè)如gb2312。
2、數(shù)據(jù)庫字符集校對(duì)選用一個(gè)gb2312,以上兩者必須一致。
3、不同編譯器或者工具如notepad、vim、editplus,它們默認(rèn)文件的編碼不一致,保存的時(shí)候選擇相應(yīng)的字符集保存。
4、頁面的環(huán)境不一樣造成,html中的head中meta中的charset=gb2312即可。
5、瀏覽器的設(shè)置默認(rèn)編碼不一致,有的自動(dòng)選擇,有的默認(rèn)gb2312,許多頁面默認(rèn)是utf8,造成亂碼,php文件采用header('Content-Type: text/html; charset=gb2312');告訴瀏覽器文本類型是html和字符集是gb2312.,header前面不能有任何輸出包括空格,此時(shí)可以不使用方法4.
綜上所述,亂碼的大部分原因。
分享題目:php數(shù)據(jù)庫字符集校隊(duì)的簡單介紹
當(dāng)前網(wǎng)址:http://www.dlmjj.cn/article/hcggcd.html