Czy zweryfikowałeś, że wartość, która jest przechowywana w bazie danych, to faktycznie U+003f (znak zapytania)? Istnieje wiele konwencji dotyczących wyświetlania znaków, które nie istnieją w wybranej czcionce i wyświetlania ich jako ?' jest dość powszechne.
Tak więc najprawdopodobniej postać zostanie poprawnie zapisana iz jakiegoś powodu zostanie po prostu wyświetlona jako '?'. Zasadniczo zignoruj sposób renderowania i sprawdź, jaki punkt kodowy jest przechowywany w bazie danych. Czy to U+9996 czy U+003f (lub coś zupełnie innego)? Nie zakładaj na ślepo, że tylko dlatego, że jest renderowany jako znak zapytania, jest to w rzeczywistości znak zapytania przechowywany w bazie danych.