你要保證你程序中指定的數(shù)據(jù)庫編碼和數(shù)據(jù)庫本身的編碼是一致的,
建水網(wǎng)站建設公司成都創(chuàng)新互聯(lián)公司,建水網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為建水1000多家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設要多少錢,請找那個售后服務好的建水做網(wǎng)站的公司定做!
要存中文的話最好用utf-8編碼,同時php的文件編碼也用utf-8;
CREATE TABLE test (
`pid` int(11) NOT NULL AUTO_INCREMENT,
`version` varchar(50) NOT NULL,
`recorddate` datetime NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
建表的時候指定編碼和字符集,一般就不會有問題了。
數(shù)據(jù)庫建表的時候指定了一個字符集的,你查看一下,你是UTF-8呢,還是GB2312,或者GBK,看到了沒有。
記住,上面的字符集是個標準,以后所有地方都要使用這個字符集合,有哪些地方呢:
一、DOS命令行的mysql里面,首先執(zhí)行命令set names 字符集,要跟這個一樣。
二、PHP文件也是的,mysql_connect之后,立即就mysql_query('set names ~')
三、PHP文件也要使用這樣的編碼,否則你文件里面寫的INSERT語句插入的漢字會是亂碼
四、瀏覽器打開你的網(wǎng)頁,也要選擇相同的編碼方式,否則頁面上會是亂碼。
php+mysql數(shù)據(jù)時我們必須保證提交到數(shù)據(jù)庫的編碼與mysql編碼是一致的這樣才可以保存中文不出現(xiàn)問號亂碼問題,下面我先整理兩個讓mysql與頁面保證編碼一致的方法。
解決中文插入數(shù)據(jù)庫亂碼的方法:
直接把中文轉變成utf-8格式,大多是這個問題導致的。
代碼如下復制代碼
$str
=
iconv('gbk','utf-8',$str);
如果還不行檢查網(wǎng)頁編碼是否正確:
代碼如下復制代碼
?php
header("Content-Type:text/html;charset=utf-8");
?
建表:
代碼如下復制代碼
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()來設置
mysql_query("SET
NAMES
GBK");
//GBK處為編碼設置
例子
下面是
"insert.php"
頁面的代碼:
代碼如下復制代碼
?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處為編碼設置
$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)
?
PHP與數(shù)據(jù)庫的編碼應一致
1. 修改mysql配置文件my.ini或my.cnf,mysql最好用utf8編碼
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-storage-engine=MyISAM
在[mysqld]下加入:
default-collation=utf8_bin
init_connect='SET NAMES utf8'
2. 在需要做數(shù)據(jù)庫操作的php程序前加mysql_query("set names
'編碼'");,編碼和php編碼一致,如果php編碼是gb2312那mysql編碼就是gb2312,如果是utf-8那mysql編碼就是 utf8,這樣插入或檢索數(shù)據(jù)時就不會出現(xiàn)亂碼了