많은 문자열이있는 데이터베이스가 있습니다. 그 중 일부는 올바르게 UTF-8로 인코딩되며 일부는 인코딩되지 않습니다. 따라서 db에서 100 개의 문자열을 선택하는 스크립트를 설정했습니다. 다음 함수는 (그것이 올바른 있는지에 상관없이) 문자열을 UTF-8 또는하지 포함되어 있는지 여부를 결정한다 :PHP : 2 문자열 - 어느 것이 UTF-8이고 어느 것이 맞지 않습니까?
function detectUTF8($text) {
return preg_match('%(?:
[\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
|\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
|\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
|\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
|[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
|\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)+%xs',
$text);
}
The result is a list with some entries with 2 strings each: one is correct, the other one is wrong. You can see it here. 그러나 어느 것이 옳은지 어떻게 결정합니까?
도와 주시면 감사하겠습니다. 미리 감사드립니다!
와우! 그것은 어수선하게 보이는 UTF-8 지원입니다. –
좋은 것이 좋지 않다고 생각합니까? 더 나은 코드가 있습니까? http://www.unspecifiederror.net/2008/09/11/detecting-utf8-in-php-without-multibyte/ (miek에 감사드립니다)의 코드가 있습니다. – caw