首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPActiveRecord编码问题

PHPActiveRecord编码问题
EN

Stack Overflow用户
提问于 2013-10-26 10:24:28
回答 1查看 903关注 0票数 1

我使用PHPActiveRecord来管理我的数据库模型,但是我遇到了一些编码问题。

我使用的是PHPMyAdmin v3.3.10.4MySQL client v5.0.51aPHPActiveRecord v1.0。我的连接排序规则和所有表都是用utf8_general_ci排序规则定义的。

我的PHPActiveRecord连接是这样创建的:

代码语言:javascript
复制
$cfg->set_connections(array(
   'development' => 'mysql://username:password@mydomain.com/database?charset=utf8'));

如果通过PhpMyAdmin手动插入带有特殊字符(例如é、ã、ç)的条目,则没有问题,但是通过PHPActiveRecord插入条目时,通过PhpMyAdmin浏览表时无法正确显示特殊字符。

如果我列出我的表项并通过PHP页面请求显示它们,我必须设置header('Content-Type: text/html; charset=utf-8'),但是我可以正确地列出所有带有特殊字符的项。

为了正确列出用PHPActiveRecord创建的带有特殊字符的条目,我必须在我的数据库或PhpMyAdmin上进行配置吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-09 03:28:15

您正在使用的PHP1.0版本的ActiveRecord不支持通过"?charset=utf8“指定编码。它是后来在v1.1中添加的,请参阅this commit

要验证这一点,请检查您的php-activerecord/lib/adapters/MysqlAdapter.php副本并搜索"set_encoding“。如果您找不到set_encoding函数定义,这意味着您使用的是不支持"?charset=utf8“配置参数的旧版本的PHP ActiveRecord。

至少有两种方法可以解决:

A)升级到PHP ActiveRecord的每晚最新版本。升级可能会破坏您现有的代码,因此请使用新版本的库彻底测试所有内容,或者

B)只需在配置连接后添加以下代码:

代码语言:javascript
复制
YourModel::query("SET NAMES 'utf8'");

它会将与该模型关联MySQL连接设置为使用UTF8字符集。如果您使用多个MySQL连接(例如,连接到多个数据库),请对每个连接执行该查询。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19602141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档