⑴ php使用utf8插入中文数据到MySQL中文显示会乱码怎么办
数据库使用utf8编码,需要在操作的过程中统一全部编码。
CREATEDATABASE`test`DEFAULTCHARACTERSET'utf8';
CREATETABLE`tablea`(
`id`INTNOTNULLAUTO_INCREMENT,
`title`VARCHAR(100)NULL,
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
默认情况下,字段的编码同表的编码,但是如果修改了表的编码,字段编码不会同步修改,需要手动修改
这里修改编码测试我将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;
连接数时设置编码
//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存入mysql数据库时汉字乱码怎么解决,文档和数据库都是utf8格式。
乱码有几个方面
首先确保数据库的编码是否正确
其次确保连接数据库的代码是否指定了正确的编码。
另外就是html页面的编码是否一致,麻烦把问题补充清楚方便排查问题。
⑶ php保存数据在MySql中怎么都是乱码
1、php/html文件编码与数据库编码不统一
2、连接数据库时没有设置连接编码,“set names 。。。”
3、数据库编码设置有问题
4、数据库字段编码设置有问题
5、php程序里面没有对相关的字段进行转码