Cały problem chyba nie leży po stronie PHP ale opiszę go bo być może ktoś będzie w stanie mi pomóc.
Kolumna w której zapisuje dane ma ustawione kodowanie na utf8

Do operacji związanych z bazą danych używam zewnętrznego programu napisanego w języku AutoIt. Domyślną wartością kodowania znaków dla połączenia z bazą danych jest "latin1". Jak zapisze w taki sposób ciąg znaków
"aącćeęlłnńoósśzżzź" to w bazie wygląda to w ten sposób (odczytane przy użyciu programu MySQL Administrator):

Co ciekawe, jeśli teraz przez mój program użyje zapytania typu "SELECT" z ustawionym kodowaniem znaków 'latin1' to wyczytane informacje będą wyświetlane z prawidłowymi polskimi znakami. Niestety po wczytaniu danych przez przeglądarkę z pliku php mam szlaczki (bo kodowanie tam mam ustawione na utf8)
Jeśli zmienię kodowanie znaków na "utf8" w parametrach połączenia z bazą MySQL w moim programie (AutoIt) to wtedy zapisany ciąg wygląda w bazie w taki sposób:

W taki sposób zapisane dane nie dam rady też prawidłowo odczytać ani przez php ani przez mój program.