❶ php如何解決查詢出來的數據是亂碼問題
亂碼一直是困擾PHP初學者的一個非常大的問題,現在總結下造成亂碼的原因及解決方法:
一、HTML頁面編碼:meta http-equiv=content-type content=text/html; charset=utf-8 這里的編碼要和資料庫編碼,及連接資料庫編碼;
二、文件在存儲編碼:比如文件inde.php,改變其存儲編碼為所需編碼。只需用EditPlus等文本編輯軟體 文件另存為,在編碼中選擇正確的編碼(這點很多人都會忽略);
三、資料庫編碼:比如用的是phpmyadmin 選擇資料庫後,選擇操作選項。下面有一個整理,這裡面也要設置成統一的編碼;
四、表編碼:操作和第三點類似。這里就不重復了;
五、欄位編碼:在建表的建欄位的時候,有個整理。如果內容有漢字,就一定要改成統一的編碼;
六、連接資料庫時mysql_select_db()後面,要加一句 mysql_query( set names utf8 );
七、 (剛遇到的)本地測試成功後的網站,傳到網上去,會有亂碼。可能會是在本地導出數據時沒有選擇正確的編碼,所以才會在導入到web上後有亂碼問題。
❷ PHP顯示MySQL數據亂碼,字元集設置都是UTF8,資料庫也是UTF8,一直找不到問題在哪裡,代碼見詳細,求大神
php+mysql的utf-8中文亂碼問題的解決方法
問題匯總:
1.mysql資料庫默認的編碼是utf8,如果這種編碼與你的PHP網頁不一致,可能就會造成MYSQL亂碼.
2.MYSQL中創建表時會讓你選擇一種編碼,如果這種編碼與你的網頁編碼不一致,也可能造成MYSQL亂碼.
3.MYSQL創建表時添加欄位是可以選擇編碼的,如果這種編碼與你的網頁編碼不一致,也可能造成MYSQL亂碼.
4.用戶提交頁面的編碼與顯示數據的頁面編碼不一致,就肯定會造成PHP頁面亂碼.
5.如用戶輸入資料的頁面是big5碼, 顯示用戶輸入的頁面卻是gb2312,這種100%會造成PHP頁面亂碼.
6.PHP頁面字元集不正確.
7.PHP連接MYSQL資料庫語句指定的編碼不正確.
使用mysql+php產生亂碼的原因都了解得很清楚了,那麼解決就不困難了.
針對不同問題的解決方法:
1.mysql資料庫默認的編碼是utf8,如果這種編碼與你的PHP網頁不一致,可能就會造成MYSQL亂碼.
修改資料庫編碼,如果是資料庫編碼不正確,可以在phpmyadmin 執行如下命令:
Alter DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是將test資料庫的編碼設為utf8.
2.MYSQL中創建表時會讓你選擇一種編碼,如果這種編碼與你的網頁編碼不一致,也可能造成MYSQL亂碼.
修改表的編碼:
Alter TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是將一個表category的編碼改為utf8.
3.MYSQL創建表時添加欄位是可以選擇編碼的,如果這種編碼與你的網頁編碼不一致,也可能造成MYSQL亂碼.
修改欄位的編碼:
Alter TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
以上命令就是將test表中 dd的欄位編碼改為utf8.
4.用戶提交頁面的編碼與顯示數據的頁面編碼不一致,就肯定會造成PHP頁面亂碼.
如果是這種情況容易解決,只需檢查下頁面,修改源文件的charset即可.
5.如用戶輸入資料的頁面是big5碼, 顯示用戶輸入的頁面卻是gb2312,這種100%會造成PHP頁面亂碼.
這種情況也是修改頁面charset即可.
6.PHP頁面字元集不正確.
為了避免PHP頁面亂碼的發生,PHP頁面開始第一句
header("content-type:text/html; charset=utf-8");
//強行指定頁面的編碼,以避免亂碼
7.PHP連接MYSQL資料庫語句指定的編碼不正確.
在連接資料庫的語句中.
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
mysql_query("set names 'utf8'"); //select 資料庫之後加多這一句
❸ php資料庫中文亂碼是怎麼造成的
確保三碼合一就可以了..
第一個是資料庫的字元集
第二個就是存進去的時候字元集
第三個就是顯示的時候的字元集
這三個都有可能造成亂碼;
第一個 舉例是:如果你插入的時候用的是GB2312 ,但你表中的default charset是utf8 那麼,就有可能亂碼了.
第二種情況就是你插入正確 但你查詢的時候以UTF8查詢出來,但你在HTML頁面里設置編碼如果非UTF8那麼也有可能造成亂碼.
❹ php 添加語句資料庫出現亂碼
連接完資料庫要mysql_query('SET
NAMES
GBK');
該PHP文件保存類型要為ANSI
資料庫的連接形式什麼的也要是gbk的
最後實在不行你就把插入到資料庫中的數據執行一下轉碼iconv(「UTF-8″,」GBK」,$data);
再不行
哥也無語了
❺ PHP讀取Access資料庫 出亂碼
access的中文版默認是GBK格式的,是無法改變字元類型的,所以用php讀取的時候會亂碼。
解決方法是:使用iconv轉換
一、使用 iconv函數製作一個轉碼的自定義從GBK轉到UTF-8的函數,如以下代碼:
function enc($c){return iconv('gbk','utf-8',$c);}
二、為了寫入資料庫的編碼是符合資料庫需要的,所以我們還要製作一個從UTF-8轉向GBK的函數:
function dec($c){return iconv('utf-8','gb2312',$c);}
製作好了轉碼函數,接下就是正常使用了。在從資料庫裡面調數據顯示在頁面的時候使用enc()函數,從頁面提交數據到資料庫時使用dec()函數,這樣就可以很好的解決PHP使用UTF-8編碼,ACCESS使用系統默認編碼的問題了。
❻ php讀取mysql中文數據出現亂碼的解決方法
1.PHP頁面語言本身的編碼類型不合適,這時候,你直接在腳本中寫的中文肯定是亂碼,不用說資料庫了
解決方法:選擇'UTF8'或者'gb2312',這樣客戶瀏覽器會自動選擇並出現正確的中文顯示。注意:'UTF8'或者'gb2312'都可以正確顯示中文的。
2.資料庫MySQL中的編碼類型不正確。
解決方法:創建資料庫的時候,MySQL
字元集選擇'UTF8',MySQL
連接校對選擇utf8_general_ci,這樣創建的資料庫用來存儲中文肯定沒有問題,
否則,你的中文首先在MySQL中就是亂碼,更不要期望它會給你在PHP頁面中顯示正確。
3.與平時的腳本編輯環境有關。比如,有些內容是自己用word寫的,有些是用記事本寫的,有些用editplus、ultraplus等文本編輯器。有時候就直接在DW中寫中文了,
解決方法:盡量用同一種編輯器。如果是拷貝來得既有的內容,建議用ultraplus中的編碼轉換功能把它轉換成utf8或者gb2312。
到底轉換成什麼類型並不重要,關鍵要求你的PHP
WEB應用程序中的編碼要一致就行。
4.編程訪問
MySQL時,建議添加一行代碼:mysql_query("SET
NAMES
'GBK'");
❼ PHP在顯示資料庫中的中文數據時顯示亂碼
其實,只要注意文件編寫的時候編碼、資料庫的編碼一般就不會有這個問題的,但是,比如你用DW(dwcs4貌似沒有這個現象)打開文件,它會以默認的編碼讀取,一旦你保存了,那就完了,用EditPlus打開之後,右下角有編碼提示,如果發現不對,另存為,覆蓋一下,就可以了
❽ php查詢資料庫亂碼
MySQL和PHP產生亂碼的原因:◆MySQL資料庫的默認編碼是utf8,如果這與你的PHP頁面編碼不一致,會造成MySQL亂碼;◆MySQL創建表,讓你選擇一個編碼,這種編碼與你的網頁編碼不一致,並能也可能造成MySQL亂碼;◆MySQL創建表,添加欄位,可以選擇的編碼,這種編碼與你的網頁編碼不一致,也可能會造成MySQL亂碼;◆用戶提交頁面的編碼頁顯示的數據編碼不一致,肯定會引起PHP頁面亂碼;◆BIG5代碼頁,如用戶輸入數據的頁面,用戶輸入是gb2312,這將導致100%的PHP頁面亂碼;◆PHP頁面字元集是不正確的;◆PHP連接到MySQL資料庫語句指定的編碼不正確的。
註:
很多人都持懷疑態度的MySQL版本不一致導致MySQL和PHP亂碼相信看過這個節目,你會不會這么認為。通常你看到某些網站中的文字可能有幾種編碼,如果你看到中國傳統的字元,它可能會BIG5編碼,有可能是utf-8編碼,GB碼更容易,是的,編碼的中國傳統簡體,繁體編碼的簡化字元,我們必須認識到這一點。如果你正在做一個簡體編碼的網頁,編碼為GB2312,香港和台灣的傳統訪問者提交的信息,它可能會導致亂碼的解決方法:
網站為utf-8編碼,因此可以兼容在世界上的所有字元。如果網站已在運行很長一段時間,有大量的舊數據不能改變簡體中文設置,建議設置為GBK編碼的頁面,GBK和GB2312的區別就在於:GBK顯示更多比GB2312簡體中國傳統要顯示的字元代碼,只能用GBK字元。 MySQL和PHP產生亂碼的了解很清楚的原因,那麼解決的辦法是不困難的。
MySQL和PHP亂碼的解決方法:
如果你安裝MySQL的編碼不能改變的,我的很多朋友購買虛擬主機建立網站,無權更改MySQL的安裝編碼,我們可以跳過,因為只要後面的步聚是正確的,同樣作為解決垃圾問題。
PHP入門網 - 常見問題解答
❾ php中為什麼插入資料庫的中文變成亂碼
請將資料庫的編碼,表的編碼以及欄位的編碼與網頁代碼的編碼保持一致。
另外注意文件本身的編碼與html代碼頭meta中的編碼說明保持一致。
那你看看是不是在連接資料庫的時候採用了utf8格式,語法如mysql_query('set
names
utf8');
❿ php顯示資料庫里的中文亂碼.。ps:資料庫和php顯示都設置了utf8,為什麼還會顯示亂碼求解答!!
原因:
這個是因為你的瀏覽默認解析編碼不是 UTF-8,這種情況瀏覽器他不知道你的文字要顯示 什麼編碼。
解決方案:
要麼設置瀏覽器默認編碼為 UTF-8
在輸出列印前,先輸出 <meta charset="utf-8">來告訴瀏覽器你想要使用的編碼方式。
栗子:
echo '<meta charset="utf-8">';//將這行放到第一行輸出
echo "<tr><><tr/>";//