Caracteres extraños - a pesar de que todo está en UTF-8
No estoy seguro por qué este hilo fue cerrado, pero este es el mismo problema que afecta a muchas personas.
Todas mis configuraciones de WP están en orden:
//define('DB_CHARSET', 'utf8');
//define('DB_CHARSET', 'utf8_unicode_ci');
//define('DB_COLLATE', '');
Incluso intenté habilitarlas una por una. Ninguna funcionó.
Cuando guardo una entrada, aparecen caracteres extraños en lugar de apóstrofes y espacios. Esto sucede tanto si escribo el contenido manualmente o no.
He probado algunos plugins.
- UTF-8 Sanitize
- Convert WP to UTF-8
..etc.
Ninguno de ellos funciona. El problema persiste.
También he cambiado el conjunto de caracteres y la colación de la base de datos en MySQL. Captura de pantalla:
Esta es una captura de pantalla de cuando ingreso contenido pegándolo:
Pero inmediatamente después de guardar, el texto regresa con caracteres confusos que lo han reemplazado:
¿Qué más?
Pasé por el proceso de volcar toda la base de datos MySQL, luego eliminar todos los caracteres antiguos que no eran utf-8 mediante el comando TR.
tr -cd '\11\12\15\40-\176' < file-with-binary-chars > clean-file
Donde file-with-binary-chars
era el volcado de MySQL. Luego restauré la tabla.
Mi configuración de MySQL está toda en utf8:
[client]
default-character-set=utf8
[mysqld]
character-set-client=utf8
collation-server=utf8_unicode_ci
character-set-server=utf8
Mi navegador es Chrome. La codificación es UTF-8 (en el menú VER).
¿Qué más puedo hacer? ¿Necesito hacer que todos los archivos de plugins sean utf-8 también?
Para su información, este blog es uno de los blogs de WordPress. Hay otras instalaciones más nuevas de WordPress en el mismo servidor usando la misma instalación de MySQL 5.6.17, pero no tienen este problema. Mi suposición es que, al ser un blog más antiguo, puede tener algunas variaciones en el texto ingresado hace mucho tiempo, pero francamente después de haber hecho todo lo anterior, realmente no sé qué más puedo hacer.
¡Gracias por cualquier aporte o sugerencia!

Esto típicamente ocurre cuando copias/pegas información de MS Word en el editor de contenido de WordPress. WordPress utiliza algo llamado "Comillas Inteligentes", a través de una función llamada wptexturize().
Solución Ideal
La solución ideal sería revisar tu contenido y reemplazar todas las comillas simples/dobles utilizando el teclado.
Sin embargo, si estás trabajando con grandes cantidades de texto copiado/pegado, esto puede no ser factible.
Deshabilitar el Filtro wptexturize()
Otra opción es deshabilitar el filtro wptexturize()
; lo cual se puede lograr colocando el siguiente código en el archivo functions.php de tu tema hijo:
remove_filter('the_content', 'wptexturize');
También puedes querer remover el filtro de los comentarios y/o extractos:
remove_filter('comment_text', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');
O para los títulos:
remove_filter('single_post_title', 'wptexturize');
remove_filter('the_title', 'wptexturize');
remove_filter('wp_title', 'wptexturize');
Limpiar la Base de Datos
Para contenido existente que ya ha guardado los caracteres "extraños" en la base de datos; puede que necesites limpiar la base de datos ejecutando las siguientes consultas desde PHPMyAdmin (asegúrate de hacer un respaldo primero):
UPDATE wp_posts SET post_content = REPLACE(post_content, '“', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, '’', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, '‘', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, '—', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, '–', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, '•', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, '…', '…');
Plugins
Bueno... es WordPress. Siempre puedes usar un plugin para ayudar a gestionar el filtro wptexturize()
. Echa un vistazo a Esta Lista y comprueba si alguno se adapta a tus necesidades.

Gracias por esta publicación tan informativa y tienes razón, las comillas causan estos problemas. Pero no se limita solo a las comillas. A veces, incluso los espacios antes y después de un punto tienen estos caracteres extraños. En segundo lugar, claramente algo en algún lugar está mal, porque esto no sucede en ningún otro blog en el mismo servidor exacto, utilizando la misma instalación base de MySQL y todo lo demás. Los archivos de configuración también son bastante similares.

Me enfrentaba exactamente al mismo problema.
Probé todo exactamente como tú y al final intenté una última cosa.
Cambié el DB_CHARSET
en el archivo wp-config
a latin1
.
Y las cosas funcionaron :/
define('DB_CHARSET', 'latin1');
define('DB_COLLATE', 'utf8mb4_general_ci');

Esto funcionó muy bien para mí. Una nota, creo que es recomendable usar utf8mb4_unicode_ci según la información en este post. Al menos, las opciones están bien explicadas aquí para que cada uno pueda tomar su propia decisión.

Lo siguiente solucionó mi problema, así que lo comparto aquí. A pesar de haber ejecutado las actualizaciones SQL sugeridas, seguía viendo esos símbolos extraños antes de los enlaces "leer más".
Estoy totalmente sorprendido. Después de horas de probar cosas y hacer pruebas, finalmente encontré la opción en "Ajustes" y luego "Lectura" llamada: "Codificación para páginas y feeds". Después de cambiar de UTF-7 a UTF-8, todo volvió a verse bien.
Y lo más extraño es que después de cambiarlo a UTF-8, la opción desaparece de la página. Según el sitio de WordPress, esta opción fue eliminada desde la versión 3.5.

El problema puede ser causado por los plugins y las subidas directas por FTP.
Aquí están los detalles:

En mi caso, los caracteres extraños no se escribieron en la base de datos. Verifica si el SQL crudo también muestra los caracteres incorrectos. Si estás viendo apóstrofes normales en la base de datos, comenta las siguientes dos líneas en el archivo wp-config.php
:
// define('DB_CHARSET', 'utf8');
// define('DB_COLLATE', '');
Eso solucionó el problema para mí inmediatamente.
"Este problema de codificación de caracteres puede ocurrir después de una actualización de la base de datos" - Enlace
