OpenCart解读(三)控制器product.php的一个BUG
上一篇 /
下一篇 2007-10-06 11:24:16
/ 个人分类:OpenCart
试用的时候,发现OpenCart对中文支持不是很好,在后台录入商品信息时,保存后出现乱码,打开PHPMyAdmin一看表里存放的内容就是乱码,很奇怪这个问题,OpenCart设计时强调代码和数据库都使用utf8,那为什么会出现乱码呢?依旧使用ZFDemo_log,在/admin/controller/product.php中插入如下调试代码(红色部分):
$name = $request->get('name', 'post'); $descrīption = $request->get('descrīption', 'post'); foreach ($request->get('name', 'post', array()) as $key => $value) { $sql = "insert into product_descrīption set product_id = '?', language_id = '?', name = '?', descrīption = '?'"; ZFDemo_Log::log('admin_controller_product.php(line 51)->$parse = ' . print_r($database->parse($sql, $insert_id, $key, $name[$key], $descrīption[$key]), true)); |
运行后台管理系统,在log.txt捕捉到如下输出:
| 03:10:19 admin_controller_product.php(line 51)->$parse = insert into product_descrīption set product_id = '12', language_id = '1', name = 'test', descrīption = ' test ' 03:10:19 admin_controller_product.php(line 51)->$parse = insert into product_descrīption set product_id = '12', language_id = '2', name = '测试', descrīption = '测试 ' } |
似乎没有什么问题,但为什么会在MYSQL的product_descrīption中出现乱码呢?在PHPMyAdmin中把上面的第二句INSERT语句直接运行,果然没有问题,那说明在OpenCart进行插入操作时有什么情况和我在使用PHPMyAdmin时不一样,再次分析源代码看到第24行这么一句:
mysql_query("set character set utf8"); |
这是一句将字符集定义为utf8的SQL语句,该不会是它造成乱码吧?为了测试,就在PHPMyAdmin中测试如下语句:
set character set utf8"; insert into product_descrīption set product_id = '12', language_id = '2', name = '测试', descrīption = '测试'; |
结果是什么?果然出现了乱码! 这句语句有什么问题?MYSQL执行上述语句出现乱码倒底是不是一个BUG?现在还不知道,把admin/controller/pruduct.php 的24行注释掉,功能恢复正常。
(未完待续)
导入论坛
收藏
分享给好友
管理
举报
TAG:
BUG
OpenCart