2

我正在使用:PHPUnit 3.6.12 / PHP 5.3.1 / MySQL 5.1.30

我正在尝试将数据库中的函数插入的值与我期望的值进行比较。
该值是一个包含重音的字符串。

所以我创建了一个 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é

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

4

1 回答 1

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

于 2013-10-26T18:21:01.967 回答