我使用PHPActiveRecord
来管理数据库模型,但是遇到了一些编码问题。
我在用PHPMyAdmin v3.3.10.4
,MySQL client v5.0.51a
和PHPActiveRecord v1.0
。
我的连接排序规则和所有表都是用utf8_general_ci
排序规则定义的。
我的PHPActiveRecord
连接是这样创建的:
$cfg->set_connections(array(
'development' => 'mysql://username:[email protected]/database?charset=utf8'));
如果我通过
PhpMyAdmin
手动插入一个带有特殊字符(例如é,ã,ç)的条目,则没有问题,但是当我通过PHPActiveRecord
插入条目时,在通过PhpMyAdmin
浏览表时,我无法正确地看到特殊字符。如果我列出我的表条目并通过
PHP
页面请求显示它们,我必须设置header('Content-Type: text/html; charset=utf-8')
,但我可以正确列出所有带有特殊字符的条目。是否需要对数据库进行任何配置,或
PhpMyAdmin
以正确列出使用PHPActiveRecord
创建的特殊字符的条目? 最佳答案
您正在使用的PHPActiveRecord 1.0版不支持通过“?字符集=utf8“。稍后在v1.1中添加,请参见this commit。
要验证这一点,请检查php activerecord/lib/adapters/MysqlAdapter.php的副本并搜索“set-encoding”。如果找不到set_编码函数定义,则表示您使用的是不支持“?charset=utf8“配置参数。
至少有两种解决方法:
A)升级到最新的PHP-ActiveRecord夜间版本。有可能升级会破坏你现有的代码,所以用新版本的库彻底测试所有的东西,或者
B)只需在配置连接后添加此代码:
YourModel::query("SET NAMES 'utf8'");
它将与该模型关联的MySQL连接设置为使用UTF-8字符集。如果您使用多个MySQL连接(例如连接到多个数据库),请为每个连接执行该查询。
关于php - PHPActiveRecord编码问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19602141/