Đây có thể là công việc cho mb_detect_encoding()
chức năng.
Theo kinh nghiệm hạn chế của tôi về nó, nó không đáng tin cậy 100% khi được sử dụng làm "trình đánh giá mã hóa" chung - Nó kiểm tra sự hiện diện của các ký tự và giá trị byte nhất định để đưa ra một phỏng đoán có học - nhưng trong trường hợp hẹp này (nó sẽ cần chỉ phân biệt giữa UTF-8 và ISO-8859-1) nó nên làm việc.
<?php
$text = $entity['Entity']['title'];
echo 'Original : ', $text."<br />";
$enc = mb_detect_encoding($text, "UTF-8,ISO-8859-1");
echo 'Detected encoding '.$enc."<br />";
echo 'Fixed result: '.iconv($enc, "UTF-8", $text)."<br />";
?>
bạn có thể nhận được kết quả không chính xác cho các chuỗi không chứa các ký tự đặc biệt, nhưng đó không phải là vấn đề.