php+mysql數(shù)據(jù)時(shí)我們必須保證提交到數(shù)據(jù)庫(kù)的編碼與mysql編碼是一致的這樣才可以保存中文不出現(xiàn)問號(hào)亂碼問題,下面我先整理兩個(gè)讓mysql與頁(yè)面保證編碼一致的方法。
創(chuàng)新互聯(lián)長(zhǎng)期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為愛輝企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè),愛輝網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
解決中文插入數(shù)據(jù)庫(kù)亂碼的方法:
直接把中文轉(zhuǎn)變成utf-8格式,大多是這個(gè)問題導(dǎo)致的。
代碼如下復(fù)制代碼
$str
=
iconv('gbk','utf-8',$str);
如果還不行檢查網(wǎng)頁(yè)編碼是否正確:
代碼如下復(fù)制代碼
?php
header("Content-Type:text/html;charset=utf-8");
?
建表:
代碼如下復(fù)制代碼
Create
TABLE
`net_city`
(
`cityid`
smallint(4)
NOT
NULL
auto_increment,
`cityname`
varchar(80)
NOT
NULL
default
'',
`provinceid`
smallint(2)
NOT
NULL
default
'0',
`inarea`
varchar(5000)
NOT
NULL
default
'',
`outarea`
varchar(5000)
NOT
NULL
default
'',
`tel`
varchar(400)
NOT
NULL
default
'',
PRIMARY
KEY
(`cityid`)
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8;
PHP里的代碼:
$conn=mysql_connect("localhost",
"用戶名",
"密碼");
mysql_query("set
names
'utf8'",$conn);
mysql_select_db("
數(shù)據(jù)名",$conn);
$exec="insert
into
net_city
(cityname,inarea,outarea,tel)
values
('".$link_cityname."','".$link_inarea."','".$link_outarea."','".$link_tel."')";
$result=mysql_query($exec,$conn);
if($result){
echo
"1";
}else{
echo
"0";
}
mysql_close($conn);
后來(lái)我試了試全部都用成gbk的,也是可以的~
在查詢數(shù)據(jù)時(shí)我們直接使用mysql_query()來(lái)設(shè)置
mysql_query("SET
NAMES
GBK");
//GBK處為編碼設(shè)置
例子
下面是
"insert.php"
頁(yè)面的代碼:
代碼如下復(fù)制代碼
?php$con
=
mysql_connect("localhost","peter","abc123");
if
(!$con)
{
die('Could
not
connect:
'
.
mysql_error());
}
mysql_select_db("my_db",
$con);
mysql_query("SET
NAMES
GBK");
//GBK處為編碼設(shè)置
$sql="INSERT
INTO
person
(FirstName,
LastName,
Age)VALUES('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if
(!mysql_query($sql,$con))
{
die('Error:
'
.
mysql_error());
}
echo
"1
record
added";
mysql_close($con)
?
這個(gè)應(yīng)該跟PHP沒有什么關(guān)系,你檢查一下你mysql數(shù)據(jù)庫(kù)里面表內(nèi)字段屬性,可能跟這個(gè)相關(guān)
還有一種可能是編碼錯(cuò)誤,包括頁(yè)面編碼及數(shù)據(jù)庫(kù)編碼。
可能導(dǎo)致錄入數(shù)據(jù)亂碼。
最好保持?jǐn)?shù)據(jù)庫(kù)編碼和你的程序文件編碼一致
比如通常都是:數(shù)據(jù)庫(kù)編碼utf8_general_ci 然后php程序文件編碼也是utf8,html也是utf8