Skip to content

CakePHP 1.2 problemas de Encode UTF-8 ISO-8859-1

by Vinícius Krolow on agosto 5th, 2009

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.

2 Comments
  1. Ricel permalink

    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.

  2. Como faço para os caracteres dos arquivos php não ficarem assim:

    $this->Session->setFlash(‘Seja bem Vindo Usuário’);

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS