Mi página muestra a menudo cosas como ë, Ã, ì, ù, à en lugar de los caracteres normales.
Utilizo utf8 para la página de cabecera y la codificación de MySQL. ¿Cómo ocurre esto?
Son caracteres codificados en utf-8. Utilice utf8_decode() para convertirlos en caracteres normales ISO-8859-1.
Si ves esos caracteres, probablemente no has especificado la codificación de caracteres correctamente. Porque esos caracteres son el resultado cuando una cadena multibyte UTF-8 se interpreta con una codificación de un solo byte como ISO 8859-1 o Windows-1252.
En este caso ë
podría codificarse con 0xC3 0xAB que representa el carácter Unicode ë
(U+00EB) en UTF-8.
Aunque utf8_decode
es una solución útil, prefiero corregir los errores de codificación en la propia tabla. En mi opinión es mejor corregir los caracteres malos en sí mismos que hacer "hacks" en el código. Simplemente haga un replace
en el campo de la tabla. Para corregir los caracteres mal codificados de OP:
update <table> set <field> = replace(<field>, "ë", "ë")
update <table> set <field> = replace(<field>, "Ã", "à")
update <table> set <field> = replace(<field>, "ì", "ì")
update <table> set <field> = replace(<field>, "ù", "ù")
Donde <table>
es el nombre de la tabla mysql y <field>
es el nombre de la columna en la tabla. Aquí hay una muy buena lista de comprobación para esos típicos caracteres mal codificados de windows-1252 a utf-8 -> Tabla de depuración de caracteres de windows-1252 a bytes UTF-8 a caracteres latinos.
¡Recuerde hacer una copia de seguridad de su tabla antes de intentar reemplazar cualquier carácter con SQL!
[Sé que esta es una respuesta a una pregunta muy antigua, pero me encontré con el problema una vez más. Alguna vieja máquina de Windows no codificó el texto correctamente antes de insertarlo en la tabla utf8_general_ci.*]