Я не знаю, сработает ли это, но я бы попробовал использовать iconv, чтобы посмотреть, будет ли он правильно транслироваться между кодировками, сравнивая результаты того же преобразования с // TRANSLIT и // IGNORE.Если два результата совпадают, то при преобразовании кодировки не найдено ни одного символа, который не может быть переведен, поэтому у вас должно быть совпадение.
$test1 = iconv("UTF-8", "big5//TRANSLIT", $text);
$test2 = iconv("UTF-8", "big5//IGNORE", $text);
if ($test1 == $test2) {
echo 'traditional';
} else {
$test3 = iconv("UTF-8", "gb2312//TRANSLIT", $text);
$test4 = iconv("UTF-8", "gb2312//IGNORE", $text);
if ($test3 == $test4) {
echo 'simplified';
} else {
echo 'Failed to match either traditional or simplified';
}
}