Z tego co zrozumiałem zamieniłeś na UTF-8 z ISO (latin2), ale już się pogubiłem. Jeżeli zgadza się to co mówię:
- wpisz do testowego rekordu w bazie ciąg polskich znaków diakrytycznych (np. za pomocą konsoli, phpadmina lub czego tam używasz).
- w pliku index musi być wyszczególniona strona kodowa (<meta http-equiv="content-type" content="text/html; charset=UTF-8">)
- zaraz po połączeniu z bazą przez php (mysql_connect) dla pewności dodaj mysql_query ('SET NAMES utf8');, choć teoretycznie nie jest to wymagane i wyświetl treść testowego rekordu.
To MUSI działać poprawnie, jeżeli baza na 100% działa w UTF-8. Jeżeli nie działa to coś masz pochrzanione w konfiguracji serwera bazy danych.
Moje przypuszczenia:
Jeżeli konwertujesz istniejącą bazę do innej strony kodowej, przed konwersją zrób dumpa i skonwertuj w gżegżółce plik do interesującego Cię formatu

Domyślam się, że tu właśnie popełniłeś błąd (nie ze swojej wiedzy). Za pewne za pomocą "ALTER DATABASE `nazwa_bazy` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci i to ALTER TABLE `nazwa_tabeli` DEFAULT CHARACTER SET utf8 COLLATE" skonwertowałeś bazę wraz z treściami. MySQL poradzi sobie ze standardowym alfabetem, nie uwzględnił jednak znaków specjalnych i wstawił zamiast nich "??". Jeżeli się nie mylę i nie zrobiłeś backup'a bazy, to czeka Cię sporo pracy, bo ww proces nie jest odwracalny ("??" to niestety fizycznie zapisane znaki).
Jeżeli masz backup, wywal wszystkie treści z bazy (lub całą bazę) i przed importem skonwertuj w gżegżółce plik .sql do UTF-8. (tip: phpMyAdmin umożliwia określenie zestawu znaków dla pliku, z którego importujesz)
Jeżeli nie masz backup'a ... Cóż :/ musisz wybrać co jest dla Ciebie wygodniejsze:
- ręczne poprawienie wszystkich treści w bazie
- czy export bazy do .sql, otworzenie pliku w notatniku i ręczne poprawienie wszystkich znaków