php - 无法使用 Phalcon 从 MySql 返回汉字

标签 php mysql encoding utf-8 phalcon

我一直在尝试开始使用 Phalcon,但几天来我一直在尝试对我的数据库进行查询。如果找不到此问题的解决方案,我将不得不继续前进。

目标表使用 inno-db 并且是 utf-8 编码的。表有两列:一列是索引值,另一列是单个(唯一)东亚字符。当尝试使用 utf-8 编码的汉字检索记录时,Phalcon 返回 0 条记录。此外,当使用索引值检索记录时,相应的字符值将作为问号(常规问号,而不是浏览器用作无法识别字符的占位符的问号)返回。

$characters = Characters::find("indCharacter = 乱");

返回此错误:

"PhalconException: Scanning error before '��' when parsing: SELECT [Characters].* FROM [Characters] WHERE indCharacter = 乱 (64)"

在实际字符周围使用单引号返回 0 个结果。

我使用命令行、phpmyadmin 和工作台运行了完全相同的查询,所有这些都在相同的环境中。所有正确返回的记录。

我还仔细检查了原始查询值是 utf-8 编码的,并且表中的所有数据都是 utf-8 编码的。

Phalcon:1.2.6
PHP: 5.4.11

最佳答案

当使用 Phalcon 的 Pdo Mysql 适配器创建数据库连接时,您必须明确设置字符编码。这是一个类似于 Phalcon 教程中的示例,只是我添加了 "charset"

$di->set('db', function() use ($config) {
    return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
        "host" => "myhost",
        "username" => "myusername",
        "password" => "mypassword",
        "dbname" => "mydbname",
        "charset" => "utf8"
    ));
});

我之前查看过各种适配器类的文档,但找不到任何与设置数据库连接编码相关的信息。我(错误地)假设编码检测是在内部处理的。

关于php - 无法使用 Phalcon 从 MySql 返回汉字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688981/

相关文章:

php - SSL Step Wise 初学者实现指南

PHP CLI 脚本和 MySQL 与 Docker 组合

php - 需要一些关于如何在 php 页面上排序/显示 MYSQL 数据的指导

php - 如何禁用缓存 100%

php - 如何在MYSQL中将mysqli_set_charset($conn ,"utf8")转换成PDO格式?

php - 在 phpMyAdmin 中查询成功,但我的 PHP 脚本无法执行

php - 存储网站数据 - JSON 与 SQL

ruby - 为什么在 Ruby 1.9 中两个具有相同字节和编码的字符串不相同?

python - 字符串分类特征的一种热编码

java - 如何在Android中正确处理字符串长度和编码?