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