⑴ php使用utf8插入中文數據到MySQL中文顯示會亂碼怎麼辦
資料庫使用utf8編碼,需要在操作的過程中統一全部編碼。
CREATEDATABASE`test`DEFAULTCHARACTERSET'utf8';
CREATETABLE`tablea`(
`id`INTNOTNULLAUTO_INCREMENT,
`title`VARCHAR(100)NULL,
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
默認情況下,欄位的編碼同表的編碼,但是如果修改了表的編碼,欄位編碼不會同步修改,需要手動修改
這里修改編碼測試我將utf8 改為 gb2312 ,僅用於觀察修改後的情況(實際使用中可能是將gbk修改為utf8)
ALTERTABLE`test`.`tablea`CHARACTERSET=gb2312;
--修改表編碼後,查看建表語句
showcreatetable`tablea`;
--可以看到輸出的建表語句中欄位單獨設置了編碼
CREATETABLE`tablea`(
`id`INTNOTNULLAUTO_INCREMENT,
`title`VARCHAR(100)CHARACTERSETutf8NULL,
)ENGINE=InnoDBDEFAULTCHARSET=gb2312;
--需要手動修改欄位編碼
ALTERTABLE`tablea`
CHANGECOLUMN`title``title`VARCHAR(100)CHARACTERSET'gb2312'NULLDEFAULTNULL;
連接數時設置編碼
//PDO連接
$db=newPDO('mysql:host=myhost;dbname=test','login','password',
array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SETNAMES'UTF8'')
);
//mysqli連接
$link=mysqli_connect("127.0.0.1","my_user","my_password","test");
mysqli_query($link,"SETNAMES'utf8';");
通過以上幾步操作,基本可以保證資料庫使用過程中不會出現亂碼
⑵ 請教大俠,php存入mysql資料庫時漢字亂碼怎麼解決,文檔和資料庫都是utf8格式。
亂碼有幾個方面
首先確保資料庫的編碼是否正確
其次確保連接資料庫的代碼是否指定了正確的編碼。
另外就是html頁面的編碼是否一致,麻煩把問題補充清楚方便排查問題。
⑶ php保存數據在MySql中怎麼都是亂碼
1、php/html文件編碼與資料庫編碼不統一
2、連接資料庫時沒有設置連接編碼,「set names 。。。」
3、資料庫編碼設置有問題
4、資料庫欄位編碼設置有問題
5、php程序裡面沒有對相關的欄位進行轉碼