Sólo hoy me di cuenta de que me faltaba esto en mis scripts PHP:MySQL - Convertir caracteres latin1 en una mesa de UTF8 en UTF8
mysql_set_charset('utf8');
Todos mis cuadros son InnoDB, el cotejo "utf8_unicode_ci", y toda mi VARCHAR las columnas son "utf8_unicode_ci" también. Tengo mb_internal_encoding('UTF-8');
en mis scripts PHP, y todos mis archivos PHP están codificados como UTF-8.
Así que, hasta ahora, cada vez que "Insertar" algo con diacríticos, ejemplo:
mysql_query('INSERT INTO `table` SET `name`="Jáuò Iñe"');
El contenido 'nombre' serían, en este caso: Jáuò Iñe
.
Desde que arreglé el juego de caracteres entre PHP y MySQL, ahora los INSERT nuevos se almacenan correctamente. Sin embargo, quiero arreglar todas las filas antiguas que están "en mal estado" en este momento. Intenté muchas cosas ya, pero siempre rompe las cadenas en el primer personaje "ilegal". Aquí está mi código actual:
$m = mysql_real_escape_string('¿<?php echo "¬<b>\'PHP á (á)ţăriîş </b>"; ?> ă-ţi abcdd;//;ñç´พดแทฝใจคçăâξβψδπλξξςαยนñ ;');
mysql_set_charset('utf8');
mysql_query('INSERT INTO `table` SET `name`="'.$m.'"');
mysql_set_charset('latin1');
mysql_query('INSERT INTO `table` SET `name`="'.$m.'"');
mysql_set_charset('utf8');
$result = mysql_iquery('SELECT * FROM `table`');
while ($row = mysql_fetch_assoc($result)) {
$message = $row['name'];
$message = mb_convert_encoding($message, 'ISO-8859-15', 'UTF-8');
//$message = iconv("UTF-8", "ISO-8859-1//IGNORE", $message);
mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string($message).'" WHERE `a1`="'.$row['a1'].'"');
}
It s "Update" con los caracteres esperados, excepto que la cadena se trunca después del carácter "A". Quiero decir, ese personaje y los siguientes caracteres no están incluidos en la cadena.
Además, las pruebas con la "iconv()" (que se comenta en el código) hace lo mismo, incluso con // IGNORE y // TRANSLIT
También he probado varios juegos de caracteres, entre ISO-8859- 1 e ISO-8859-15.
Realmente necesito ayuda aquí! Gracias.
WOW os guarda mi día!Nunca usé esas funciones, ahora las uso en una ACTUALIZACIÓN y funcionó. ¡Muchas gracias! – Nuno
¡Gracias por esto! Construí un pequeño script php que recorre todas las columnas de cada tabla. Hizo el truco :) – wiesson
GRACIAS MUCHO ABS !!!!! Muchas preguntas relacionadas con SO, pero solo esta contenía la función para convertir correctamente a UTF-8 – alds