Brigando com UTF-8

73 views
Skip to first unread message

Danilo Miguel

unread,
Dec 21, 2009, 2:24:23 PM12/21/09
to cake-php-pt
Tenho o seguinte header no meu layout:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>Nononono</title>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

    <meta name="language" content="pt-br" />
</head>

As páginas são exibidas corretamente, porém quando envio dados por um formulário, a acentuação está sendo gravada incorretamente e sendo exibida assim:

Meu nome � danilo in�cio miguel

O banco está setado como UTF-8, meus arquivos estão em UTF-8. Alguma sugestão?


Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290

Vitao

unread,
Dec 21, 2009, 2:43:43 PM12/21/09
to cake-...@googlegroups.com
vc salvou no banco como UTF8? ou vc entrou lá e colocou na mao os dados?

Danilo Miguel

unread,
Dec 21, 2009, 2:46:37 PM12/21/09
to cake-php-pt
Salvei como UTF8, via form



Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290


2009/12/21 Vitao <euve...@gmail.com>
vc salvou no banco como UTF8? ou vc entrou lá e colocou na mao os dados?

--

Você está recebendo esta mensagem porque se inscreveu no grupo "Cake PHP Português" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para cake-...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para cake-php-pt...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/cake-php-pt?hl=pt-BR.

Vitao

unread,
Dec 21, 2009, 2:48:53 PM12/21/09
to cake-...@googlegroups.com
você esta convertendo pra salvar?

Danilo Miguel

unread,
Dec 21, 2009, 2:50:41 PM12/21/09
to cake-php-pt
Procedimento nornal: $this->Model->save($this->data)

Sempre fiz assim, nunca deu pau...


Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290


2009/12/21 Vitao <euve...@gmail.com>
você esta convertendo pra salvar?

Neilson Lima

unread,
Dec 21, 2009, 2:58:07 PM12/21/09
to cake-...@googlegroups.com
Danilo,


no arquivo de configuraçaão vc set o banco:

        'encoding' => 'utf8',

Depois você volta aqui e me fala, boa sorte!



2009/12/21 Danilo Miguel <dimi...@gmail.com>

Procedimento nornal: $this->Model->save($this->data)

Sempre fiz assim, nunca deu pau...


Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290


2009/12/21 Vitao <euve...@gmail.com>
você esta convertendo pra salvar?




--
Atenciosamente,
Neilson P. Lima
-------------------------------------------
Cursos PHP e MySql?
- Em BH ligue (31)  2505-6450

Cell Phone : 31- 8848-8407
Desenvolvedor Web

Danilo Miguel

unread,
Dec 21, 2009, 3:42:21 PM12/21/09
to cake-php-pt
Nothing!

Acabo de perceber, pelo pr($this->data) que os dados já está sendo enviados errados, ou seja, prossívelmente não é BD.

O pr() retorna isso:
Meu nome � danilo in�cio miguel


Tanta dúvida pois confesso, nunca tive esse tipo de problema com o Cake.



Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290


2009/12/21 Neilson Lima <neils...@gmail.com>

Edinei Luis Cipriani

unread,
Dec 21, 2009, 3:58:21 PM12/21/09
to cake-...@googlegroups.com
Então tenta salvar seu aquivo add.ctp e default.ctp como utf8. 

Danilo Miguel

unread,
Dec 21, 2009, 3:57:42 PM12/21/09
to cake-php-pt
Não somente os dois, mas todos estão em UTF8


Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290


2009/12/21 Edinei Luis Cipriani <phpe...@gmail.com>

Edinei L. Cipriani

unread,
Dec 21, 2009, 4:06:53 PM12/21/09
to cake-...@googlegroups.com
Usando windows?

2009/12/21 Danilo Miguel <dimi...@gmail.com>



--
Edinei L. Cipriani
Blog: http://phpedinei.wordpress.com
Twitter: http://www.twitter.com/phpedinei

Desenvolvedor Colégio Trilingue Inovação
Site: http://www.colegioinovacao.com.br
Cursando Sistemas de Informação  - Unoesc Chapecó 1 Período
Integrante do grupo Fool N Lost de algoritimos computacionais
Fone 49 84149086

Danilo Miguel

unread,
Dec 21, 2009, 4:07:57 PM12/21/09
to cake-php-pt
AINDA sim :S



Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290


2009/12/21 Edinei L. Cipriani <phpe...@gmail.com>

Edinei Luis Cipriani

unread,
Dec 21, 2009, 6:26:46 PM12/21/09
to cake-...@googlegroups.com
Então danilo, o servidor deve estar como iso, e por padrão o windows salva os arquivos em iso.

Verifica isso. Tenho quase certeza que seja o charset do arquivo.

Danilo Miguel

unread,
Dec 21, 2009, 8:19:50 PM12/21/09
to cake-php-pt
Depois de muito tempo apanhando aqui, descobri o problema. Não tem nada a ver como BD, o marvado estava no tal do strtolower(), que não trabalha com acentuação. Fiz uma gambiarra, ou melhor, catei um pedaço de código na própria página do PHP e deu certo.

De qualquer forma, grato a todos os que deram um pitaco. A gente sempre aprende um pouco. Obrigado mesmo!

Neilson Lima

unread,
Dec 22, 2009, 5:25:37 AM12/22/09
to cake-...@googlegroups.com
Danilo,

Fico feliz que tenha resolvido. Agora você pode cola aqui o código que resolveu o problema? Só para ficar registrado esse momento ;)

2009/12/21 Danilo Miguel <dimi...@gmail.com>

Depois de muito tempo apanhando aqui, descobri o problema. Não tem nada a ver como BD, o marvado estava no tal do strtolower(), que não trabalha com acentuação. Fiz uma gambiarra, ou melhor, catei um pedaço de código na própria página do PHP e deu certo.

De qualquer forma, grato a todos os que deram um pitaco. A gente sempre aprende um pouco. Obrigado mesmo!

Danilo Miguel

unread,
Dec 22, 2009, 5:46:29 AM12/22/09
to cake-php-pt
Ei-lo ai:

function strtolower_utf8($string){
  $convert_to = array(
    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
    "v", "w", "x", "y", "z", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï",
    "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "ù", "ú", "û", "ü", "ý", "а", "б", "в", "г", "д", "е", "ё", "ж",
    "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы",
    "ь", "э", "ю", "я"
  );
  $convert_from = array(
    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U",
    "V", "W", "X", "Y", "Z", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï",
    "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж",
    "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ъ",
    "Ь", "Э", "Ю", "Я"
  );

  return str_replace($convert_from, $convert_to, $string);
}


Mais uma vez, grato a todos pela ajuda!


Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290


2009/12/22 Neilson Lima <neils...@gmail.com>

--

Felipe Alberto

unread,
Dec 22, 2009, 12:44:02 PM12/22/09
to Cake PHP Português
é melhor usar assim:
setlocale(LC_ALL, 'pt_BR');

http://php.net/manual/en/function.setlocale.php

> E-mail/MSN: dimig...@gmail.com
> +55 35 9123.7290
>
> 2009/12/22 Neilson Lima <neilsonl...@gmail.com>


>
> > Danilo,
>
> > Fico feliz que tenha resolvido. Agora você pode cola aqui o código que
> > resolveu o problema? Só para ficar registrado esse momento ;)
>

> > 2009/12/21 Danilo Miguel <dimig...@gmail.com>


>
> >> Depois de muito tempo apanhando aqui, descobri o problema. Não tem nada a
> >> ver como BD, o marvado estava no tal do strtolower(), que não trabalha com
> >> acentuação. Fiz uma gambiarra, ou melhor, catei um pedaço de código na
> >> própria página do PHP e deu certo.
>
> >> De qualquer forma, grato a todos os que deram um pitaco. A gente sempre
> >> aprende um pouco. Obrigado mesmo!
>
> > --
> > Atenciosamente,
> > Neilson P. Lima
> > -------------------------------------------
> > Cursos PHP e MySql?
> > - Em BH ligue (31)  2505-6450
>
> > Cell Phone : 31- 8848-8407
> > Desenvolvedor Web
>
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "Cake PHP
> > Português" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para cake-...@googlegroups.com
> > .
> > Para cancelar a inscrição nesse grupo, envie um e-mail para

> > cake-php-pt...@googlegroups.com<cake-php-pt%2Bunsu...@googlegroups.com>

Danilo Miguel

unread,
Dec 22, 2009, 12:59:36 PM12/22/09
to cake-php-pt
Sem dúvida, é melhor! Mas e quando ele teima em não funcionar?

risos...


Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290


2009/12/22 Felipe Alberto <felipe...@gmail.com>
Para cancelar a inscrição nesse grupo, envie um e-mail para cake-php-pt...@googlegroups.com.

Renan Gonçalves

unread,
Dec 22, 2009, 1:25:44 PM12/22/09
to cake-...@googlegroups.com
strtolower_utf8 ?

Tem um set de funções pra isso: mb_*
http://php.net/mb_strtolower


[]'s

2009/12/22 Felipe Alberto <felipe...@gmail.com>
Para cancelar a inscrição nesse grupo, envie um e-mail para cake-php-pt...@googlegroups.com.

Para obter mais opções, visite esse grupo em http://groups.google.com/group/cake-php-pt?hl=pt-BR.





--
Renan Gonçalves aka renan.saddam
CakeDC Software Engineer
CakePHP Core Developer
Website: renangoncalves dot com
Extrema, MG, Brazil

Renan Gonçalves

unread,
Dec 22, 2009, 1:52:45 PM12/22/09
to cake-...@googlegroups.com
Aí é hora de RTFM ... ;)

Tem alguns funções pra ajudar você, como:
 - mb_detect_encoding - Pra ver se é UTF-8 mesmo o que você ta tentando mexer
 - mb_check_encoding - Pra checar o encoding
 - mb_strtolower - Passando como segundo parâmetro o encoding
 - etc...


[]'s

2009/12/22 Danilo Miguel <dimi...@gmail.com>

Daniel

unread,
Dec 23, 2009, 1:56:13 PM12/23/09
to Cake PHP Português
Cara esse erro so da no Windows 7. Tive o mesmo problema e consegui
resolver.. mas quando mando pra produção está funcionando tudo
certinho.

Nem a mb_strtolower me ajudo.

Se alguem souber como arrumar, iria ser de grande ajuda.

Danilo Miguel

unread,
Dec 23, 2009, 2:17:06 PM12/23/09
to cake-php-pt
Daniel,

Adicione a sua lista de SO que dão problemas o Vista (como se isso fosse novidade!). O problema eu só resolvi da forma como mencionei láááááááá atrás...

Se não tiver ai da um toque que eu te envio novamente (mas dá uma olhadinha no histórico da lista que tem sim). Eu taquei no app_controller e funfou..




Danilo Miguel - www.dsntech.com.br
E-mail/MSN: dimi...@gmail.com
+55 35 9123.7290


2009/12/23 Daniel <sphi...@gmail.com>
Reply all
Reply to author
Forward
0 new messages