1.我寫了php程式碼向mysql資料庫插入一個帶有中文的欄位值,在phpMyadmin查看顯示亂碼,在mysql控制台查看也是亂碼,我已經把每個欄位的排序規則改為uft8_general_ci,在phpmyadmin裡面直接插入顯示正常,在mysql控制台直接插入也顯示正常,只是透過php插入就不正常,我也在php程式碼寫了header("Content-Type:text/html;charset=utf-8");
<code><?php header("Content-Type:text/html;charset=utf-8"); if($con=mysqli_connect('localhost','root','')){ echo '连接成功'; } else{ echo '连接失败'; } if(mysqli_select_db($con,"test")){ echo '选择数据库成功'; } else{ echo '选择数据库失败'; } $str="insert into students(name,age)values('周杰伦','23')"; if(mysqli_query($con,$str)){ echo '插入成功'; } else{ echo '插入失败'; } mysqli_close($con);//关闭数据库 ?></code>
3.請大神幫忙看問題出在哪裡?
1.我寫了php程式碼向mysql資料庫插入一個帶有中文的欄位值,在phpMyadmin查看顯示亂碼,在mysql控制台查看也是亂碼,我已經把每個欄位的排序規則改為uft8_general_ci,在phpmyadmin裡面直接插入顯示正常,在mysql控制台直接插入也顯示正常,只是透過php插入就不正常,我也在php程式碼寫了header("Content-Type:text/html;charset=utf-8");
<code><?php header("Content-Type:text/html;charset=utf-8"); if($con=mysqli_connect('localhost','root','')){ echo '连接成功'; } else{ echo '连接失败'; } if(mysqli_select_db($con,"test")){ echo '选择数据库成功'; } else{ echo '选择数据库失败'; } $str="insert into students(name,age)values('周杰伦','23')"; if(mysqli_query($con,$str)){ echo '插入成功'; } else{ echo '插入失败'; } mysqli_close($con);//关闭数据库 ?></code>
3.請大神幫忙看問題出在哪裡?
看你的資料庫表裡面有正常的中文,那就試插入資料的時候出現的問題。統一字元編碼格式:
確保資料庫,表,欄位設定的都是utf-8
確保連接資料庫的時候設定字元集是utf-8
確保程序文件是utf-8
確保mysql安裝程式的設定檔設定字元utf-8
我找到問題關鍵了,下面兩位回答的我都試過了,不起效果,問題出在mysql.ini配置少了一句話default-character-set = utf8 ,我是安裝wampserver後用這個軟體自己安裝的mysql他的mysql.ini沒有那句話,,而且如果加入這句話位置也不能亂加,必須加在我圖片指出的位置
用show variables like 'character_set_%;查看修改ini檔案後的字元編碼如下圖
你要設定mysql編碼 執行sql "set names utf8"
設定字符集試試
<code>mysqli_set_charset($con, "utf8");</code>