If you see the UNICODE REPLACEMENT CHARACTER �, that means your browser is trying to read text in a Unicode encoding, but the encountered value is not actually encoded in a valid Unicode encoding and has hence been replaced as undecodable.
This means the data from your database is not actually UTF-8 encoded, as you claim in your meta tag. You likely have curly quotes encoded in Latin-1 there. See UTF-8 all the way through my web application (Apache, MySQL, PHP, …) and Handling Unicode Front To Back In A Web App.