我正在尝试转换为 unicode 并创建一些单元测试以确保 unicode 正常工作。
这是我当前的代码,它在 mb_detect_encoding() 行上失败,我也不确定它是否是对 unicode 支持的有效测试:
function testMultiLingualEncodings(){
// Create this string via a heredoc.
$original = '
A good day, World!
Schönen Tag, Welt!
Une bonne journée, tout le monde!
يوم جيد، العالم
좋은 일, 세계!
Một ngày tốt lành, thế giới!
こんにちは、世界!
'; // Contains international characters from utf-8
$this->assertTrue(mb_detect_encoding($original, 'UTF-8', true) === true); // Fails regardless of whether strict is true or not.
$returned = query_item("select :multi limit 10", array(':multi'=>$original)); // Select this exact string, parameterized, from the database
//debug($returned, string_diff($returned, $original));
$this->assertTrue((bool)$original); // test original isn't null.
$this->assertTrue((bool)$returned); // Test returned string isn't null.
$this->assertTrue($original === $returned); // Test original exactly matches returned string
}
所以 mb_detect_encoding() 表示上面的初始字符串不是 UTF-8。我也在尝试将该字符串传递到数据库中并将其取出,然后与原始字符串进行比较。但是,我不确定这是否是对数据库连接编码的有效测试。
所以总的来说,我怎样才能为 utf-8 支持创建一个单元测试,上面的方法是否可以修改来解决这个目标?