Hai verificato che il valore che viene memorizzato nel database sia effettivamente U+003f (punto interrogativo)? Ci sono tutti i tipi di convenzioni su come visualizzare i caratteri che non esistono nel font scelto e visualizzarli come ?' è abbastanza comune.
Quindi molto probabilmente, il personaggio viene memorizzato correttamente e, per qualsiasi motivo, viene semplicemente visualizzato come '?'. Fondamentalmente, ignora come viene eseguito il rendering e guarda quale punto di codice viene archiviato nel database. È U+9996 o U+003f (o qualcos'altro)?Non dare per scontato che, solo perché viene visualizzato come punto interrogativo, sia in realtà un punto interrogativo memorizzato nel database.