Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi pessoal,
Gostaria de saber o seguinte...
Eu tenho um formulário em uma página feita em utf-8... Quando eu submeto este formulário ele vai pra uma outra página que também é utf-8...
Até aí tudo bem... O problema é o seguinte...
Quando dou um echo $_POST["nome"] por exemplo, ele exibe certinho o que foi postado... Porém se dou um strlen($_POST["nome"]) e a palavra tiver acento, ele tá contando as letras com acento como se fossem 2 ou 3 caracteres.
Exemplo:
Se eu postei "Cí" (sem aspas), o strlen deveria retornar 2, está retornando 3, está contando como que se o "í" fossem 2 caracteres.
Aí testei usar o utf8_decode, aí ele conta certinho, mas se eu der um echo, ele mostra uns caracteres malucos.
O que pode ser este problema? Nunca tinha visto isso antes.
Já tentei dar um ini_set para definir o charset padrão e definir o charset através do header(), nada resolveu!
Um abraço e obrigado a todos!
FELIZ 2013.
Oi Angelo,
Na verdade nem utilizei MySQL, era HTML e PHP mesmo.
Mas consegui resolver o problema!
SOLUÇÃO:
Lendo diversos artigos na internet, em um deles foi citado que utf-8 trabalha com 2 bytes, o que poderia interferir na contagem e foi citada uma função mb_strlen.
Na saga em busca de uma solução, fui estudar esta função, e ela permite que você passe um "charset" como parâmetro para contagem.
Graças a isso, consegui resolver o problema dessa forma:
mb_strlen($_POST["nome"], "utf-8");
Obrigado a todos e FELIZ 2013!
Boa tarde,
Este artigo pode lhe ajudar - Clique aqui