joootap 0 Denunciar post Postado Dezembro 1, 2009 Fala pessoal, estou aqui com mais uma dúvida... Dessa vez mysql/php. Estou procurando na internet há uns 3 dias como solucionar meu problema com acentuação, já tentei diversas coisas e até agora nada. Quero utilizar a codificação Utf-8 e realmente quando jogo no banco fica uma acentuação incorreta, por exemplo: João = JoÒo Isso quando ainda trato no php utilizando o $nome = utf8_decode($_POST["nomefrm"]); Caso o contrário fica assim no banco de dados: João = Jo|-úo Estou procurando no forum, mas também até agora nenhuma solução me adiantou. Alguém tem alguma solução definitiva? Aonde verificar e etc... Mas por favor, não quero utilizar ISO-8859-1. Agradeço a todos! Compartilhar este post Link para o post Compartilhar em outros sites
Roniesds 0 Denunciar post Postado Dezembro 1, 2009 como fica se você usar utf8_encode($_POST["nomefrm"]); ? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 1, 2009 Há vários tópicos sobre isso. A solução é simples: http://www.rberaldo.com.br/blog/2009/11/06/problemas-com-codificacao-acentos-nao-interpretados/ http://forum.imasters.com.br/index.php?app=core&module=search§ion=search&do=quick_search&search_app=core&fromsearch=1 Compartilhar este post Link para o post Compartilhar em outros sites
joootap 0 Denunciar post Postado Dezembro 1, 2009 Com o utf8_encode ele fica assim João = Jo|-âTúo Então... De todas essas soluções simples eu já tentei, não rolou. Será que faltou eu olhar algum lugar que não estou olhando? Enfim, obrigado por responderem, aguardo mais ajuda de quem poder. Compartilhar este post Link para o post Compartilhar em outros sites
joootap 0 Denunciar post Postado Dezembro 2, 2009 Depois de muitos testes, parece que a visualização do mysql pela linha de comando estava vindo errada e na verdade utilizando o utf8_decode funcionou, cujo eu já tinha testado, mas só consegui ver agora pelo php my admin... Essa é uma solução adequada? Colocar utf8_decode em todas variáveis de entrada? E no meio desse conflito, pelo que eu vi meu php estava exibindo os caracteres errados e não houve header que solucionou... Buscando no php manual achei uma solução bem adequada, espero que sirva para alguém. iconv_set_encoding("internal_encoding", "ISO-8859-1"); iconv_set_encoding("output_encoding", "UTF-8"); iconv_set_encoding("input_encoding", "UTF-8"); ob_start("ob_iconv_handler"); Setei o encoding do php e rolou tudo certinho, antes os carcteres ficavam por exemplo: jo?o no lugar de joão... Agora meu método de utf8_decode é o melhor para mysql/php ou existe algo melhor? Valeu Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Dezembro 2, 2009 Depende do que você está falando... Se é no banco, mude o collation... Se for na página, coloque isto na primeira linha do seu PHP header("Content-Type: text/html; charset=ISO-8859-1", true); ou header("Content-Type: text/html; charset=UTF-8", true); Veja qual funciona... Compartilhar este post Link para o post Compartilhar em outros sites
joootap 0 Denunciar post Postado Dezembro 3, 2009 Depende do que você está falando... Se é no banco, mude o collation... Se for na página, coloque isto na primeira linha do seu PHP header("Content-Type: text/html; charset=ISO-8859-1", true); ou header("Content-Type: text/html; charset=UTF-8", true); Veja qual funciona... Realmente quero usar tanto no banco quanto no php UTF-8, e no banco já está com o collation utf_genaral_ci, mas mesmo assim tenho que tratar com o utf8_decode, há alguma forma sem esse tratamento? Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Dezembro 3, 2009 Realmente quero usar tanto no banco quanto no php UTF-8, e no banco já está com o collation utf_genaral_ci, mas mesmo assim tenho que tratar com o utf8_decode, há alguma forma sem esse tratamento? UTF-8 possui variações pode ser que os dados no seu banco de dados estejam sendo gravados em latin1 mas com condificação UTF8. verifique se está realmente sendo gravado como UTF8-utf8 verifique qual charset está usando o banco de dados qual charset está usando as tabelas qual charset está deifnido para cada coluna. exemplo um banco de dados pode estar definido como latin1 uma tabela específica como sjis e uma coluna dentro dessa tabela pode estar como utf8 os dados dentro da coluna vao ser gravados em utf8 as outras colunas sem especificação, receberá o charset definido pela tabela, "sjis" se a tabela não tivesse especificação, seriua atribuído o charset latin1 do banco.. enfim.. isso é apenas a "ponta do iceberg" consulte a busca do forum, pois existem centenas de tópicos abordando questões diferentes. utilize o MySQL Administrator para gerenciar o MySQL Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Dezembro 3, 2009 Você está utilizando AJAX? Se estiver, será necessário mesmo utilizar utf8_decode() devido ao AJAX não suportar muito bem essa codificação... Eu sempre uso latin1 no BD e ISO-8859-1 nas páginas... Compartilhar este post Link para o post Compartilhar em outros sites
joootap 0 Denunciar post Postado Dezembro 5, 2009 Em algumas partes estou implementando ajax, mas ainda não é o caso. Mas já resolvi o que eu queria, agradeço a todos! Até mais. Compartilhar este post Link para o post Compartilhar em outros sites