數(shù)據(jù)庫使用utf8編碼,需要在操作的過程中統(tǒng)一全部編碼。
10多年的興山網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整興山建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“興山網站設計”,“興山網站推廣”以來,每個客戶項目都認真落實執(zhí)行。
1.數(shù)據(jù)庫默認編碼
CREATE?DATABASE?`test`?DEFAULT?CHARACTER?SET?'utf8';
2.表默認編碼
CREATE?TABLE?`tablea`(
`id`?INT?NOT?NULL?AUTO_INCREMENT,
`title`?VARCHAR(100)?NULL,
)ENGINE=InnoDB?DEFAULT?CHARSET=utf8;
3.字段默認編碼
默認情況下,字段的編碼同表的編碼,但是如果修改了表的編碼,字段編碼不會同步修改,需要手動修改
這里修改編碼測試我將utf8 改為 gb2312? ,僅用于觀察修改后的情況(實際使用中可能是將gbk修改為utf8)
ALTER?TABLE?`test`.`tablea`?CHARACTER?SET?=?gb2312?;
--?修改表編碼后,查看建表語句
show?create?table?`tablea`;
--?可以看到輸出的建表語句中字段單獨設置了編碼
CREATE?TABLE?`tablea`(
`id`?INT?NOT?NULL?AUTO_INCREMENT,
`title`?VARCHAR(100)?CHARACTER?SET?utf8?NULL,
)ENGINE=InnoDB?DEFAULT?CHARSET=gb2312;
--?需要手動修改字段編碼
ALTER?TABLE?`tablea`?
CHANGE?COLUMN?`title`?`title`?VARCHAR(100)?CHARACTER?SET?'gb2312'?NULL?DEFAULT?NULL?;
4.當前數(shù)據(jù)庫連接的編碼
連接數(shù)時設置編碼
//?PDO?連接
$db?=?new?PDO('mysql:host=myhost;dbname=test',?'login',?'password',?
array(PDO::MYSQL_ATTR_INIT_COMMAND?=?'SET?NAMES?\'UTF8\'')
);?
//?mysqli連接
$link?=?mysqli_connect("127.0.0.1",?"my_user",?"my_password",?"test");
mysqli_query($link,"SET?NAMES?'utf8';");
通過以上幾步操作,基本可以保證數(shù)據(jù)庫使用過程中不會出現(xiàn)亂碼
?php
header("content-type:text/html;charset=gbk");
$conn=mysqli_connect("localhost","用戶","密碼","數(shù)據(jù)庫")
or
die("無法連接mysql數(shù)據(jù)庫服務器!");
$conn-query("set
names
gbk");
?
meta
http-equiv="content-type"
content="text/html;
charset=gbk"
/
這樣統(tǒng)一下
還有文件編碼格式不能是utf-8模式的
mysql_query("SET
NAMES
'UTF-8'");//將MySql默認字符集設置為utf-8
這句錯了
MYSQL和PHP
HTML不一樣
UTF8不帶"-"號
請將數(shù)據(jù)庫的編碼,表的編碼以及字段的編碼與網頁代碼的編碼保持一致。
另外注意文件本身的編碼與html代碼頭meta中的編碼說明保持一致。
那你看看是不是在連接數(shù)據(jù)庫的時候采用了utf8格式,語法如mysql_query('set
names
utf8');