我正在使用: PHPUnit 3.6.12 / PHP 5.3.1 / MySQL 5.1.30
我正在尝试将数据库中函数插入的值与我期望的值进行比较 该值是一个字符串CONTAINING ACCENTS。
所以我创建了一个xml文件:expectedValue.xml(以UTF-8编码的文件)
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<table name="MyTable">
<column>MyColumn</column>
<row>
<value>résumé</value>
</row>
</table>
</dataset>
以下是测试方法中的代码(以UTF-8编码的文件)
public function testSave()
{
// this function saves the data in an UTF-8 database
save('résumé');
$queryTable = $this->getConnection()->createQueryTable('MyTable', 'SELECT MyColumn FROM MyTable') ;
$expectedTable = $this->createXMLDataSet('expectedValue.xml)->getTable('MyTable') ;
$this->assertTablesEqual($expectedTable, $queryTable) ;
}
以下是我得到的结果:
Failed asserting that
MYTable
MyColumn
résumé
is equal to expected
MyTable
MyColumn
résumé
有谁知道这个编码问题可能来自哪里? 谢谢 !!
答案 0 :(得分:2)
可能是数据库连接
当您连接到MySQL(在getConnection()方法中)时,您需要确保明确设置UTF-8。
$pdo = new PDO(
'mysql:host=hostname;dbname=defaultDbName',
'username',
'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
如果您不使用MySQL,则可以搜索设置字符集的方法。