CakePHP 1.2 problemas de Encode UTF-8 ISO-8859-1
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.
Olá!
Eu utilizo o cake em uma aplicação. Tenho um banco Postgres 8.3, com a minha base de dados criada com encoding utf8.
Utilizo um servidor apache que antes tinha encoding utf8 e foi modificado para iso8859-1.
Após essa mudança, todos os caracteres ficaram desconfigurados.
Utilizei o método utf8_decode() e consegui reparar os caracteres com problema e está tudo ok, no entanto, ao tentar inserir dados no banco pela aplicação ele retorna um erro: “sequência de bytes é inválida para a codificaÃ$Ão “UTF8″: 0xe76866. Verificar client_encoding”
Como posso resolver esse problema sem recriar a minha base de dados?
É possível reparar esse problema via código php?
Aguardo uma sugestão ou solução.
Obrigado.
Como faço para os caracteres dos arquivos php não ficarem assim:
$this->Session->setFlash(‘Seja bem Vindo Usuário’);