Acentos, ñ, y caracteres UTF-8 en CakePHP 1.2 y MySQL
Agosto 16th, 2008 | Published in CakePHP
Cuando utilizo CakePHP 1.2, la mayoria de las veces obtengo errores en los acentos, ñ, o caracteres especiales UTF-8 al momento de extraer la información de una tabla MySQL latin1, el problema principal es que olvido poner SET NAMES UTF-8 a cada una de las llamadas a la base de datos, así como poner el charset=utf-8 en el layout.
La solucion es:
En mi views/layouts/default.ctp, entre los tags de <head> y </head>:
echo $html->charset('utf-8');
Y crear el archivo app_model.php en el folder app/ con el siguiente contenido:
class AppModel extends Model { function __construct() { parent::__construct(); $this->query("SET NAMES 'utf8'"); } }
Nota: Primero va el parent::__construct(); ya que antes de que podamos ejecutar cualquier query en el modelo (o usar $this), éste debe de ser instanciado.
Esto ejecutará por default SET NAMES ‘utf-8′ en todas las queries… no es una forma ideal pero saca del problema.