php修改数据库编码 php数据库中文乱码怎么解决

PHP使用utf8插入中文数据到MySQL中文显示会乱码怎么办?数据库使用utf8编码,需要在操作的过程中统一全部编码 。
1.数据库默认编码
CREATE DATABASE `test` DEFAULT CHARACTER SET 'utf8';
2.表默认编码
CREATE TABLE `tablea`(
`id` INT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(100) NULL,
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.字段默认编码
默认情况下,字段的编码同表的编码,但是如果修改了表的编码,字段编码不会同步修改 , 需要手动修改
这里修改编码测试我将utf8 改为 gb2312,仅用于观察修改后的情况(实际使用中可能是将gbk修改为utf8)
ALTER TABLE `test`.`tablea` CHARACTER SET = gb2312 ;
-- 修改表编码后,查看建表语句
show create table `tablea`;
-- 可以看到输出的建表语句中字段单独设置了编码
CREATE TABLE `tablea`(
`id` INT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(100) CHARACTER SET utf8 NULL,
)ENGINE=InnoDB DEFAULT CHARSET=gb2312;
-- 需要手动修改字段编码
ALTER TABLE `tablea`
CHANGE COLUMN `title` `title` VARCHAR(100) CHARACTER SET 'gb2312' NULL DEFAULT NULL ;
4.当前数据库连接的编码
连接数时设置编码
// PDO 连接
$db = new PDO('mysql:host=myhost;dbname=test', 'login', 'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND = 'SET NAMES \'UTF8\'')
);
// mysqli连接
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "test");
mysqli_query($link,"SET NAMES 'utf8';");
通过以上几步操作,基本可以保证数据库使用过程中不会出现乱码
php怎么设置编码header("Content-type: text/html; charset=utf-8");
另外你的编辑器编码也要对应哦
a. 如果欲使用gb2312编码php修改数据库编码,那么php要输出头php修改数据库编码:header(“Content-Type: text/html; charset=gb2312") , 静态页面添加meta http-equiv="Content-Type" content="text/html; charset=gb2312" , 所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件 。
b. 如果欲使用utf-8编码,那么php要输出头 :header(“Content-Type: text/html; charset=utf-8"),静态页面添加meta http-equiv="Content-Type" content="text/html; charset=utf-8",所有文件的编码格式为utf-8 。
最近需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312,发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些 。让我郁闷了好一会儿,去网上一查资料才知道这是iconv函数的一个bug 。iconv在转换字符"—"到gb2312时会出错 。解决方法很简单,就是在 需要转成的编码后加 "//IGNORE" 也就是iconv函数第二个参数后,如下:
iconv("UTF-8","GB2312//IGNORE",$data)
ignore的意思是忽略转换时的错误,如果没有ignore参数 , 所有该字符后面的字符串都无法被保存 。
PHP显示MySQL数据乱码 , 字符集设置都是UTF8,数据库也是UTF8,一直找不到问题在哪里 , 代码见详细,求大神php+mysqlphp修改数据库编码的utf-8中文乱码问题php修改数据库编码的解决方法
问题汇总:
1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.
2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
【php修改数据库编码 php数据库中文乱码怎么解决】4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.
5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.

推荐阅读