編表結(jié)構(gòu)把..在整理這項(xiàng)里面找到gbk_chinese_ci.把所有字段全改成這個
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),賀蘭網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:賀蘭等地區(qū)。賀蘭做網(wǎng)站價格咨詢:18982081108
其實(shí)編碼只是一種顯示方法!你如果添加時設(shè)置成gbk取出也是gbk那就不會出現(xiàn)亂碼情況.
如果你數(shù)據(jù)庫不是gbk但你添加成gbk了!需要在數(shù)據(jù)庫中是亂碼但是按gbk取出數(shù)據(jù)一樣是正常的!
php+mysql數(shù)據(jù)時我們必須保證提交到數(shù)據(jù)庫的編碼與mysql編碼是一致的這樣才可以保存中文不出現(xiàn)問號亂碼問題,下面我先整理兩個讓mysql與頁面保證編碼一致的方法。
解決中文插入數(shù)據(jù)庫亂碼的方法:
直接把中文轉(zhuǎn)變成utf-8格式,大多是這個問題導(dǎo)致的。
代碼如下復(fù)制代碼
$str
=
iconv('gbk','utf-8',$str);
如果還不行檢查網(wǎng)頁編碼是否正確:
代碼如下復(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);
后來我試了試全部都用成gbk的,也是可以的~
在查詢數(shù)據(jù)時我們直接使用mysql_query()來設(shè)置
mysql_query("SET
NAMES
GBK");
//GBK處為編碼設(shè)置
例子
下面是
"insert.php"
頁面的代碼:
代碼如下復(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)
?
在你的數(shù)據(jù)中建立的表的數(shù)據(jù)紡碼不對, 查看表結(jié)構(gòu) -- 修改--?整理 ?然后選擇 utf8_general_ci當(dāng)然你已經(jīng)保存的數(shù)據(jù)就變不回中文了,但你修改編碼以后就正常了
應(yīng)該是中文插入有亂碼吧。
首先確定創(chuàng)建的數(shù)據(jù)庫的字符集為支持中文格式的:如UTF-8;
然后確保mysql客戶端顯示字符集也是UTF-8就行了。