笔记:PHP查询mysql数据后中文字符乱码
2014-08-11 12:38
399 查看
新建表Clubs
id name
1 程序员
2 架构师
3 产品经理
4 测试
如果在phpMyAdmin中查看name字段内容就是?,修改MySQL 字符集选择UTF8,MySQL 连接校对选择utf8_general_ci
在mysql中查看字段内容为正确的中文字符后,通过mysql_query('select * from clubs')查询
用var_dump打印查询结果如下,所有的中文汉字都变成了?
解决办法:在执行mysql_query之前先执行
如果还不行,请确认php文件编码格式是否是utf8格式,同时在php文件头增加
解决问题的根本办法就是把相关的编码格式都统一为utf8。
查询结果中文字符没问题了,但是$clubs转化为json时,name字段中文字符却又变了
输出内容如下
解决方案:
原因:
json_encode只支持UTF8编码的字符,使用JSON作为提交和接收的数据格式时,字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,就极容易出现中文乱码的问题。解决办法是在用js或者PHP处理JSON数据的时候都采用UTF8的形式。
CREATE TABLE `Clubs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) CHARACTER SET utf8 NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
id name
1 程序员
2 架构师
3 产品经理
4 测试
如果在phpMyAdmin中查看name字段内容就是?,修改MySQL 字符集选择UTF8,MySQL 连接校对选择utf8_general_ci
在mysql中查看字段内容为正确的中文字符后,通过mysql_query('select * from clubs')查询
用var_dump打印查询结果如下,所有的中文汉字都变成了?
array (size=4) 0 => array (size=2) 'id' => string '1' (length=1) 'name' => string '???' (length=3) 1 => array (size=2) 'id' => string '2' (length=1) 'name' => string '???' (length=3) 2 => array (size=2) 'id' => string '3' (length=1) 'name' => string '????' (length=4) 3 => array (size=2) 'id' => string '4' (length=1) 'name' => string '??' (length=2)
解决办法:在执行mysql_query之前先执行
mysql_query("set names utf8");
如果还不行,请确认php文件编码格式是否是utf8格式,同时在php文件头增加
header("Content-Type:text/html;charset=utf-8");
解决问题的根本办法就是把相关的编码格式都统一为utf8。
查询结果中文字符没问题了,但是$clubs转化为json时,name字段中文字符却又变了
$clubs=json_encode($clubs); echo($clubs);
输出内容如下
[{"id":"1","name":"\u7a0b\u5e8f\u5458"},{"id":"2","name":"\u67b6\u6784\u5e08"},{"id":"3","name":"\u4ea7\u54c1\u7ecf\u7406"},{"id":"4","name":"\u6d4b\u8bd5"}]
解决方案:
foreach ( $clubs as $key => $value ) { foreach($value as $k=>$v){ $clubs[$key][$k] = urlencode($v); } } $clubs=json_encode($clubs); echo(urldecode($clubs));
原因:
json_encode只支持UTF8编码的字符,使用JSON作为提交和接收的数据格式时,字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,就极容易出现中文乱码的问题。解决办法是在用js或者PHP处理JSON数据的时候都采用UTF8的形式。
相关文章推荐
- mac 下的 xampp用php读取mysql数据 中文字符出现乱码
- mysql 数据查询时 中文乱码问题 以 php 为例
- MySQL查询中使用Concat关键字来拼接中文字符乱码(不同的数据类型拼接)解决方式
- php插入数据 mysql 中文乱码
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- PHP连接MySQL查询结果中文显示乱码解决方法
- PHP插入Mysql中文数据乱码:
- php读取mysql中文数据出现乱码的解决方法
- php echo输出中文,读取MYSQL数据 echo 输出中文乱码
- php读取mysql中文数据出现乱码的解决方法
- linux下查询MySQL中文数据乱码
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- PHP读取MySQL中文数据乱码[转载]
- mysql 控制台环境下查询中文数据乱码,插入、更新中文数据不成功
- Mysql中问字符现实乱码和无法添加中文数据问题
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- 简单解决php+mysql时mysql数据表中的中文乱码问题
- PHP连接MySQL查询结果中文显示乱码问题
- PHP+MySQL存储数据出现中文乱码的问题
- PHP+MySQL存储数据出现中文乱码的问题