Mostrando algún tipo de apóstrofo (Actualmente se muestra como diamante)

Algunas filas en mi base de datos contienen un apóstrofo de algún tipo, que, cuando se muestra con PHP, se convierte en diamantes con un signo de interrogación en el centro. Ejemplo, si se copia correctamente: Captain Jim O'Brien

Estos “apóstrofes” se insertaron muy probablemente a través de TinyMCE, donde el usuario estaba copiando y pegando desde Word, o algo de una computadora Mac tal vez.

¿Cómo puedo mostrar estos “apóstrofes”? Cuando veo la fila en PHPMyAdmin, se muestran los apóstrofes (sin diamante), por lo que obviamente hay una manera.

Mi encoding de caracteres está configurada en UTF-8, y he probado htmlspecialchars($string) y htmlentities($string) , sin suerte.

Los personajes están codificados en diferentes lugares.

MySQL tiene una encoding de caracteres particular. Por defecto, no es UTF-8, sino latin1.

El documento HTML que generas usando PHP también tiene una encoding de caracteres particular especificada. Finalmente, los bytes reales en el documento HTML suponen de hecho una encoding de caracteres particular, que si no tiene cuidado puede ser diferente a la encoding de caracteres que especifique para el documento.

Verifique que su encoding MySQL esté configurada en UTF-8 como primer paso. Tenga en cuenta que MySQL puede tener la encoding de caracteres predeterminada para la base de datos anulada por tabla o incluso por columna.

Puede que le interese esta publicación relacionada para obtener una comprensión más profunda de la encoding de caracteres

Codificación de caracteres y el ‘Issue

Actualizar

Algo puso los datos en la base de datos MySQL en primer lugar. Tal vez ese “algo” no estaba usando la encoding UTF-8.