php插入中文
⑴ php使用utf8插入中文数据到Mysql中文显示会乱码怎么办
数据库使用utf8编码,需要在操作的过程中统一全部编码。
1.数据库默认编码
CREATEDATABASE`test`DEFAULTCHARACTERSET'utf8';
2.表默认编码
CREATETABLE`tablea`(
`id`INTNOTNULLAUTO_INCREMENT,
`title`VARCHAR(100)NULL,
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
3.字段默认编码
默认情况下,字段的编码同表的编码,但是如果修改了表的编码,字段编码不会同步修改,需要手动修改
这里修改编码测试我将utf8 改为 gb2312 ,仅用于观察修改后的情况(实际使用中可能是将gbk修改为utf8)
ALTERTABLE`test`.`tablea`CHARACTERSET=gb2312;
--修改表编码后,查看建表语句
showcreatetable`tablea`;
--可以看到输出的建表语句中字段单独设置了编码
CREATETABLE`tablea`(
`id`INTNOTNULLAUTO_INCREMENT,
`title`VARCHAR(100)CHARACTERSETutf8NULL,
)ENGINE=InnoDBDEFAULTCHARSET=gb2312;
--需要手动修改字段编码
ALTERTABLE`tablea`
CHANGECOLUMN`title``title`VARCHAR(100)CHARACTERSET'gb2312'NULLDEFAULTNULL;
4.当前数据库连接的编码
连接数时设置编码
//PDO连接
$db=newPDO('mysql:host=myhost;dbname=test','login','password',
array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SETNAMES'UTF8'')
);
//mysqli连接
$link=mysqli_connect("127.0.0.1","my_user","my_password","test");
mysqli_query($link,"SETNAMES'utf8';");
通过以上几步操作,基本可以保证数据库使用过程中不会出现乱码
⑵ 用php往数据库里插入中文为什么乱码
我也曾遇到过这个问题,折腾了好几个月终于找到原因了:
如下:
$query = "INSERT INTO biao(topid,title,link,body) VALUES(0,'这时标题','this my link','这里是身体');";
mysql_query(set names utf8);
mysql_query($query,$conn);
原因就是少了 mysql_query(set names utf8); 这一句 ,
并且这一句一定要加在 查询语句(mysql_query($query,$conn);)的前面;
希望能够帮到你,一起进步
⑶ php插入中文数据时 mysql乱码
如果mysql字符集都设置没问题的话,只是php这边程序插入的问题,query语句前加mysql_query('set
names
utf8');
⑷ PHP插入中文到mysql数据库出现乱码
字符集的问题,在做插入操作之前执行一下语句:set names gbk;
⑸ php往mysql插入中文,在数据库显示的是问号
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
meta标签的编码格式写错误了,把这个替换你原来那个就行了