유니 코드로 변환하고 유니 코드가 작동하는지 확인하기 위해 일부 단위 테스트를 작성하려고합니다. 여기 유니 코드 지원을위한 단위 테스트
는 mb_detect_encoding() 라인에 실패 내 현재 코드입니다, 나는 또한 유니 코드 지원의 유효한 시험인지 잘 모르겠어요 어떤 : 이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 지원을위한 단위 테스트를 어떻게 만들 수 있습니까? 그 목표를 해결하기 위해 수정할 수있는 방법은 무엇입니까?
$this->assertTrue(mb_detect_encoding($original, 'UTF-8') === 'UTF-8')
을 할 수 있도록합니다. 그 시점에서, 나는 원래 파일이 utf-8이라는 것을 안다. 나는 또한 utf-8 인 문자열에 문자를 포함 시켰습니다. 따라서, "abcde"예제는 테스트 문자열에 확실히 -not-ascii 문자가 있기 때문에 적용되지 않는 것 같습니다. 나는 간단히 그 파일을 만들었지 만, 그것이 유니 코드 지원을 테스트하는 가장 좋은 방법이라고 주장하지는 않습니다. 그러나 그것이 작동하지 않는다면, 무엇을 할 것입니다. – Kzqai테스트 작업을하게하려면'$ this-> assertTrue (mb_detect_encoding ($ UTF-8 ') ==='UTF-8 ')' –
@LukaszKujawa 답변을 편집 할 수 있도록 댓글을 옮길 수 있습니까? ? 진드기는 그 때 의미가 있습니다 :-) –