Tôi đã tìm thấy một chức năng hữu ích trên một câu trả lời khác và tôi tự hỏi nếu ai đó có thể giải thích cho tôi những gì nó đang làm và nếu nó là đáng tin cậy. Tôi đã sử dụng mb_detect_encoding() nhưng nó đã không được khắc phục khi đọc từ một tập tin ISO8859-1 trên một hệ điều hành Linux.Kiểm tra chuỗi UTF8 trong PHP, đây có phải là phương pháp đáng tin cậy không?
Chức năng này có vẻ hoạt động trong mọi trường hợp tôi đã thử nghiệm.
Đây là câu hỏi: Get file encoding
Dưới đây là các chức năng:
function isUTF8($string){
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', $string);
}
Đây có phải là một cách đáng tin cậy phát hiện chuỗi UTF8? Chính xác nó đang làm gì? Nó có thể được thực hiện mạnh mẽ hơn?
Tại sao không sử dụng một cái gì đó như 'mb_detect_encoding' (http: // php .net/manual/en/function.mb-detect-encoding.php)? – summea
Chỉ cần đề cập đến chức năng này cho rằng chuỗi "1" không phải là utf8, trong khi đó (phải rõ ràng nó chỉ là một ascii, nhưng nó vẫn nên được kết hợp thành utf8) – zerkms
@summea bạn đã đọc câu hỏi chưa tất cả các? –