PHP查詢mysql,中文資料,通過不同方式添加的相同資料竟然顯示不同解決方案
來源:互聯網
上載者:User
PHP查詢mysql,中文資料,通過不同方式添加的相同資料竟然顯示不同
hi,
我先說下我的情況。php的新手。
----現象
輸出的頁面中,我已經添加了,我也在查詢mysql的時候,添加了
mysql_query("set character set utf8");
mysql_query("SET NAMES 'UTF8'");
有的中文可以顯示,有的不能。
----亂碼顯示的過程和代碼
我的phpmyadmin中資料庫和text欄位,都是用 utf8_unicode_ci進行設定。
我手動通過phpmyadmin在資料庫添加的中文,然後直接執行
mysql_query("set character set utf8");
mysql_query("SET NAMES 'UTF8'");
$rs = $db->query("SELECT * FROM book");
顯示出亂碼。
----正常顯示的代碼和意外的結果
mysql_query("set character set utf8");
mysql_query("SET NAMES 'UTF8'");
$rs2 =$db->exec("INSERT INTO `lalabook`.`book` (`bookname`, `bookdes`) VALUES ('小兵', '兵小')");
$rs = $db->query("SELECT * FROM book");
可以正常的顯示出我插入的資料。但是有個問題是,我在通過phpmyadmin查看我插入的資料時,顯示的時亂碼。
----
所以我不清楚這個時什麼原因造成的,是不是我以後插入資料都要通過代碼。不能再用phpmyadmin插入了
------解決方案--------------------
在phpmyadmin 內直接執行 SET NAMES 'UTF8' 然後再SELECT ....出來的結果呢?
phpmyadmin也是需要設定連結編碼的.
------解決方案--------------------
是不是檔案本身的編碼有問題
------解決方案--------------------
是虛擬機器主機吧, 一切都是正常的.
使用者提交Utf8,php操作入庫,出庫就可以了。
phpadmin亂碼是因為mysql_server編碼一般服務商都是latin的,但服務商一般都保證connenct/client/result是utf8的,也就是資料出入的編碼是utf8,儲存的時候是latin,所以去phpadmin看php操作的會亂碼。
另外,在phpadmin裡執行sql插入的資料,在php讀取的時候會亂碼,這個問題是很神奇的,我也沒看phpmyadmin頁面是什麼編碼。
一句話:設定庫,表,列的編碼全部是utf8-unicode-ci,之後資料的出入庫都採用utf8編碼,不要在意phpadmin查資料時候亂碼,不會影響使用者即可。
------解決方案--------------------
編碼常用的是utf8-general-ci
不只是表要通一,要統一的總共有四處
一是:資料庫類型,其中包括,資料庫,表,欄位三處都要統一,可以檢查一下
二是:檔案的編碼類別型,你若用dw或editplus可以查看頁面編碼,不同需修改
三是:訪問資料庫時的設定既set NAMES utf8;
四是:瀏覽器顯示方式,既
這四處必需統一,否則可能會出現問題