Gdy ja walczyłem z polskimi znakami pomógł mi artykuł:
http://tosiek.pl/o-co-chodzi-z-latin1-i-dl...-polskie-znaki/Zrobiłem na początku PHP
ini_set('default_charset', 'UTF-8');
a potem ustawienie kodowania dla połączenia z mysql
$pdo = new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES latin1"));
Najbardziej zdziwiło mnie, że kodowanie latin1, ISO-8859-1 nie obsługuje polskich znaków ani nie istnieją one w tym kodowaniu

Oczywiście Ty możesz mieć inne kodowania, ale może coś zadziała.
Ogólnie jednym jest kodowanie w bazie, a jeszcze innym kodowanie połączenia. To potrafi się zmieniać nawet w zależności od hostingu.