Seguido várias pessoas tem problemas com encode no desenvolvimento com CakePHP 1.2, são pequenos erros que levam a fazer isso, para solucionar os mesmos normalmente é simples, porém vou buscar descrever aqui onde a maioria pode ocorrer:
Database Config
No config/database.php, onde definimos a conexão a base de dados do CakePHP, é possível definir nomes de atributos que serão os nomes do tipo de conexão a base de dados.
Exemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| < ?php
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'root',
'database' => 'abccc',
'encoding' => 'utf8',
);
}
?> |
O importante aqui é definir o hash enconding no array do attributo da sua configuração de banco, no caso foi definido utf8 (sem o hífen).
Aplicação Charset
No arquivo config/core.php, existe a configuração de encoding a ser definida para aplicação:
1
2
3
4
| /**
* Application wide charset encoding
*/
Configure::write('App.encoding', 'UTF-8'); |
Sete nela o mesmo encode que você está usando ao longo da aplicação.
Charset do HTML
Outro local que definimos o encode da aplicação agora no caso o encode do HTML, é no helper Html, no layout verificar o:
1
| < ?php echo $html->charset(); ?> |
Por padrão o arquivo views/layouts/default.ctp já contei a impressão do meta charset, e não é necessário passar parâmetro para o mesmo, visto que já foi definido no config/core.php o encoding default da aplicação, logo o HtmlHelper pega o que foi definido no config/core.php.
Se o seu arquivo de layout não contem a sua adição pode ser necessária.
Database
Por último se continuar ainda com problemas de encoding, é necessário verificar seu banco de dados criado, verifique se o mesmo está setado com o encode esperado, assim como as tabelas e os atributos do tipo string estão também usando o mesmo encode.
Files
Outra verificação a ser feita é o encode dos arquivos, vale lembrar que os arquivos PHP devem estar no mesmo encode do resto da aplicação, para verificar isso no linux você pode usar o comando file: file arquivo.php, ele irá enformar o encode do arquivo, caso esteja errado converta o arquivo para o encode correto.
Esses processos são triviais ao longo do desenvolvimento com o CakePHP, e para aqueles que estão com algum problema provavelmente, algum desses processos descritos devem estar levando a sua aplicação CakePHP a apresentar esse tipo de error.