私はユニコードに変換し、ユニコードが機能していることを確認するためにいくつかの単体テストを作成しようとしています。
これが私の現在のコードです。これは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サポートの単体テストを作成するにはどうすればよいですか?上記の方法は、その目標を解決するために変更できるものですか?