TP框架和PDO字符编码的问题

WBOY
发布: 2016-08-04 09:19:19
原创
1378 人浏览过

如果用框架插入中文并查看不会乱码  如果用PDO插入和查询的中文也不会乱码  但是用框架查看PDO插入的中文就会乱码  用PDO输出查看TP插入的中文也会乱码  这是为什么?如果在mysql黑窗口直接插入中文的话  用框架查看中文不会乱码 用PDO则会乱码  我PDO里面加了这句话也不管用啊 header('content-type:text/html;charset=utf-8;');      
我之前改过 字符编码  都是瞎改的  后来我查看了一下表的字符编码   发现为什么字段是uft8格式  表却是gbk格式?像这种情况怎么让框架和PDO方式查询的中文才能不是乱码呢?某个字段的编码和这个表的编码有什么关系吗?到底以哪个为准?
这是mysql现在的字符编码
TP框架和PDO字符编码的问题

<code> CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(15) NOT NULL,
  `class` varchar(400) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=gbk |






</code>
登录后复制
登录后复制

回复内容:

如果用框架插入中文并查看不会乱码  如果用PDO插入和查询的中文也不会乱码  但是用框架查看PDO插入的中文就会乱码  用PDO输出查看TP插入的中文也会乱码  这是为什么?如果在mysql黑窗口直接插入中文的话  用框架查看中文不会乱码 用PDO则会乱码  我PDO里面加了这句话也不管用啊 header('content-type:text/html;charset=utf-8;');      
我之前改过 字符编码  都是瞎改的  后来我查看了一下表的字符编码   发现为什么字段是uft8格式  表却是gbk格式?像这种情况怎么让框架和PDO方式查询的中文才能不是乱码呢?某个字段的编码和这个表的编码有什么关系吗?到底以哪个为准?
这是mysql现在的字符编码
TP框架和PDO字符编码的问题

<code> CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(15) NOT NULL,
  `class` varchar(400) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=gbk |






</code>
登录后复制
登录后复制

tp框架采用的是utf8格式,所以你肯定是数据库字符集还设置的有问题,需要将数据库设置成utf8,表也需要设置成utf8即可
你看你上面的SQL代码,字段是utf8,表却是gbk,肯定是有问题的

<code> CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(15) NOT NULL,
  `class` varchar(400) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=utf8 |</code>
登录后复制
<code>ALTER DATABASE 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci</code>
登录后复制

不要纠结,统一把你整个项目所涉及编码的地方都设置成utf8就不会出现乱码问题了

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板