php無法將中文數據寫入數據庫表的解決方法:1、將mysql所用字符集修改為utf8;2、將php文件編碼所用字符集改為utf-8;3、將前臺網頁所用字符編碼修改為utf-8。
本文操作環境:windows10系統、php 7&&mysql 5.0、thinkpad t480電腦。
在學習PHP的過程中我們可能會遇到無法將中文數據插入數據表的情況,以及前臺網頁無法正確顯示從數據庫中獲取的中文數據的情況。遇到這種問題我們需要將mysql所用字符集修改為utf8,PHP文件編碼所用字符集改為utf-8,前臺網頁所用字符編碼改為utf-8,這樣就可以解決問題了。
具體步驟如下:
1. 運行MySQL安裝目錄下的MySQLInstanceConfig.exe,配置默認編碼為utf8;
記得選擇“Best Support For Multilingualism”,同時在下面的下拉列表中選擇“utf8”
配置完成后,檢查MySQL安裝路徑下的my.ini文件中“default-character-set”的設置,此時應該是已經設置為utf8了,如果不是,則設置為default-character-set=utf8
2.1 在創建數據庫時指定utf8編碼:
CREATE DATABASE database_name CHARACTER SET “utf8” COLLATE “utf8_general_ci”;
2.2 在創建數據表時指定utf8編碼:
CREATE TABLE table_name ( Column_name datatype, ...... )ENGINE=InnoDB DEFAULT CHARSET=utf8;
3. 將文件編碼設置為utf-8;
如果用的是PhpStorm,則其默認的文件編碼就是utf-8,不用更改
4.設置頁面所用字符集為utf-8:
5.在對數據進行操作之前應該先進行mysql_query('set names utf8'); 操作,然后再執行對數據的查詢,更新,插入等 。
6.最后將客戶端來源數據使用的字符集,查詢結果字符集設置為gbk,:
SET character_set_client =gbk; //直接從MySQL命令行客戶端插入中文數據時,存儲數據不會亂碼
SET character_set_results =gbk; //從MySQL命令行客戶端查看返回的中文數據不會亂碼
PS:上述內容是針對于MySQL Server 5.0的,在MySQL Server 5.6 中其默認的所有所用的字符編碼都是utf8
推薦學習:php培訓