Kineri 0 Denunciar post Postado Janeiro 29, 2010 Saudações, Cenário: Estou criando um sistema de galeria de fotos, onde o usuário entra no painel admin, cadastra um evento e faz o upload das fotos. Problema: Se o usuário usar caracteres acentuados (á, é, õ etc), eles irão ficar exatamente assim no banco de dados e, quando eu der um SELECT e receber esses dados para listar os eventos cadastrados, esses caracteres virão exatamente assim, causando a aparição de símbolos estranhos no lugar dos acentos. Dúvida: Como posso evitar isso? Transformando os acentos em entities? "Forçando" o HTML a exibir eles de algum jeito? Vi algumas coisas sobre as funções htmlentities() e html_entity_decode() do PHP mas elas não me ajudaram (ou eu usei incorretamente). Aguardo Respostas, o/ Compartilhar este post Link para o post Compartilhar em outros sites
Kineri 0 Denunciar post Postado Janeiro 29, 2010 Com charset UTF-8, os acentos ficam errados mesmo, não? (charset seria o único jeito de mudar?) Compartilhar este post Link para o post Compartilhar em outros sites
hao 0 Denunciar post Postado Janeiro 30, 2010 Já tive muito problema com caracteres. Inicialmente usava latin no banco e ISO-8859-1 nas páginas, mas direto quando precisava usar ajax, ficava tudo zuado. Minhas dicas: - Deixe a codificação do arquivo como UTF-8 without BOM (uso o programa Notepad++) - No começo dos arquivos user header('Content-type:text/html; charset=utf-8', true);- No banco use como utf8_general_ci Ve ai se ajuda, Abçs! Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 30, 2010 Siga a dica do " hao" O importante é manter sempre a mesma codificação em todos os arquivos (tanto nos cabeçalhos quanto nas tags HTML) e no banco de dados. Pode ser utf-8 ou latin1/iso. Mas prefiro utf-8, que é o padrão que vem sendo adotado mundialmente Talvez este link ajude também: http://www.rberaldo.com.br/blog/2009/11/06/problemas-com-codificacao-acentos-nao-interpretados/ Compartilhar este post Link para o post Compartilhar em outros sites
Kineri 0 Denunciar post Postado Janeiro 30, 2010 Sobre esses tipos de charsets, como posso arrumá-los? as páginas eu edito com dreamweaver e o mysql trabalho no phpmyadmin Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 30, 2010 Viu o link que passei? A codificação do arquivo é modificada no editor de textos. A codificação do HTML é feita com meta tag e a codificação do banco de dados é feita na SQL mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Janeiro 30, 2010 PHP, HTML, MySQL - Charset Encoding Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 30, 2010 Bem, eu utilizo <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> não vejo problema em usar este meta. Compartilhar este post Link para o post Compartilhar em outros sites
Kineri 0 Denunciar post Postado Janeiro 30, 2010 Pessoal, troquei TUDO pra UTF-8 (ressalvei meus arquivos, coloquei o cabeçalho HTML/PHP, modifiquei a database, as tabelas e os dados do mysql p/ utf8_bin (era a mais plausível no painel do phpmyadmin)) mas meus acentos continuam aparecendo como quadrados. No mysql, o que está como acento literal (á, é etc) aparece como esse quadrado. Já o que está como entity (á, é etc) aparece corretamente. Faltou eu fazer alguma coisa? Compartilhar este post Link para o post Compartilhar em outros sites
Kineri 0 Denunciar post Postado Janeiro 30, 2010 Galera, consegui resolver meu problema da seguinte maneira: Depois de trocar tudo para UTF-8, com disse acima, me deu aqueles famosos "cinco minutos" e eu resolvi tentar a função htmlentities() no retorno do banco de dados. O que estava assim: echo("$variaveldobdcomacentos"); Ficou assim: echo(htmlentities("$variaveldobdcomacentos")); Com isso, meu problema foi sanado. Mentira. Isso funcionou com os dados que já estavam no MySQL. Quando eu adiciono mais coisas com acento, pela página de cadastro, os acentos estão chegando totalmente errados no BD. Seria problema de encodes e etc? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 30, 2010 Não adianta só mudar o charset. O ideal é recadastrar os dados em novos campos, criados já com a codificação UTF-8. Verifique se o banco, as tabelas e os campos estão na mesma codificação. às vezes a tabela está numa codificação e o campos, em outra. Compartilhar este post Link para o post Compartilhar em outros sites
Kineri 0 Denunciar post Postado Janeiro 30, 2010 Já conferi isso. Eu mesmo mudei tudo: database, tabelas e dados para utf8_bin o que voce sugeriu aí em cima é recriar a tabela no bd? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 30, 2010 o que voce sugeriu aí em cima é recriar a tabela no bd? sim. Só mudar a codificação pode não ser suficiente. Você cria as novas tabelas, transfere os dados e apaga as antigas. Tudo isso com comandos SQL, sem grandes dificuldades Compartilhar este post Link para o post Compartilhar em outros sites
Kineri 0 Denunciar post Postado Fevereiro 4, 2010 ok, farei isso quando estiver na máquina com acesso ao BD (ou seja, segunda-feira) Pessoal, depois de muito tempo, eu voltei a mexer nisso. Já criei as tabelas novamente e recoloquei os dados e NADA... ainda continuo comproblemas nos acentos. Alguém tem mais alguma dica? Compartilhar este post Link para o post Compartilhar em outros sites
Berfault 0 Denunciar post Postado Maio 19, 2010 ok, farei isso quando estiver na máquina com acesso ao BD (ou seja, segunda-feira) Pessoal, depois de muito tempo, eu voltei a mexer nisso. Já criei as tabelas novamente e recoloquei os dados e NADA... ainda continuo comproblemas nos acentos. Alguém tem mais alguma dica? ja passei essa dica pra outro usuario, mas nao lembro do link, então vo falar novamente. após a conexão com o bd coloca mysql_set_charset('utf8',$connection); ou então muda o default charset pra conexões no php.ini. (o padrão é latin1) nao se esqueça de mudar tudo pra utf8. o html, o php.... e anula qualquer utf8_encode() senao o acento nao aparece. Compartilhar este post Link para o post Compartilhar em outros sites