PHPUnit - assertTablesEqual编码重音符号

时间:2013-09-06 13:16:27

标签: encoding utf-8 phpunit

我正在使用: 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é

有谁知道这个编码问题可能来自哪里? 谢谢 !!

1 个答案:

答案 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,则可以搜索设置字符集的方法。