关于Phalcon框架在读取和写入数据库时产生中文乱码,
问题可能发生在中文日文韩文混排使用UTF-8编码时造成,读取数据库时,双字节文字显示为问号??时。
首先,要保持数据库,表,字段为utf-8编码格式。
其次,要确保php文件为utf-8编码格式。
如果依然不能解决,造成的显现可能是采用pdo_mysql读取和写入的汉字正常,
采用命令行,或者phpmyadmin写入的数据,使用pdo_mysql中读取是问号??
采用pdo_mysql写入的数据在命令行,或者phpmyadmin读取时是乱码。
这种情况下需要调整Phalcon框架创建pdo_mysql连接时设置编码
如下:
$connection = new \Phalcon\Db\Adapter\Pdo\Mysql(array(
"host" => $config->database->host,
"username" => $config->database->username,
"password" => $config->database->password,
"dbname" => $config->database->name,
"charset" => "utf8"
));
创建连接时加入:"charset" => "utf8"
也就是说在创建连接时可以随意设置编码格式,不过编码必须是要在
/usr/share/mysql/charsets/Index.xml 文件中存在的编码
<charset name="utf8">
<family>Unicode</family>
<description>UTF-8 Unicode</description>
<alias>utf-8</alias>
<collation name="utf8_general_ci" id="33">
<flag>primary</flag>
<flag>compiled</flag>
</collation>
<collation name="utf8_bin" id="83">
<flag>binary</flag>
<flag>compiled</flag>
</collation>
</charset>
以上是该文件的一段代码。
-----完了-----