to jest akurat mój skrypt z JS, ale idea jest ta sama, sobie przerób na PHP i tyle.
Kod
try{//to się uda tylko, jeśli plik jest w utf-8.
uniConv.charset = 'utf-8';
return uniConv.ConvertToUnicode(rawdata);//zwracamy dane, nie ma sensu dalej lecieć
} catch(e) {//inaczej napewno nie jest to utf-8 i sprawdzamy czy jest to iso, czy windowsowski syf
if(/[±¦¶¬¼]/.test(rawdata)) charset='iso-8859-2';//jeśli są krzaczki typowe dla iso-8859-2
else {//trzeba sprawdzić, czy napewno nie jest to iso - sprawdzamy, duże Ą pod kątem kodowania windows-1250
if(/[¥¹]/.test(rawdata)) charset='windows-1250';//jeśli Ą jest pod postacią windows-1250
else charset='iso-8859-2';//można przekonwertować na iso
}
}
Sobie sprawdź jak wyglądają polskie znaki zakodowane pod różnymi kodowaniami oraz wyświetlane pod jeszcze innymi.