2013-09-06 5 views
0

Я использую: PHPUnit 3.6.12/PHP 5.3.1/MySQL 5.1.30PHPUnit - assertTablesEqual акценты кодирования

Я пытаюсь сравнить значение вставленных функций в базе данных со значением Я жду.
Значение представляет собой строку, СОДЕРЖАЩАЯ АККЕНТЫ.

Так что я создал 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

Может быть, возможно подключение к базе данных

При подключении к MySQL (в методе GetConnection()), вы должны убедиться, что вы явно установить UTF-8.

$pdo = new PDO( 
    'mysql:host=hostname;dbname=defaultDbName', 
    'username', 
    'password', 
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") 
); 

Если вы не используете MySQL, вы можете найти способы установки кодировки.

Смежные вопросы