gpt4 book ai didi

PHPActiveRecord 编码问题

转载 作者:行者123 更新时间:2023-11-29 06:44:20 24 4
gpt4 key购买 nike

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

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

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

$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') ,但我可以正确列出所有带有特殊字符的条目。

我是否必须对我的数据库或 PhpMyAdmin 进行任何配置才能正确列出使用 PHPActiveRecord 创建的具有特殊字符的条目?

最佳答案

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

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

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

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

B) 配置连接后只需添加此代码:

YourModel::query("SET NAMES 'utf8'");

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

关于PHPActiveRecord 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19602141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com