Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve, salve comunidade iMasters!
Muitas vezes precisamos puxar dados do banco de dados mysql e exibí-los na página, porém (ah, porém), os acentos sofrem um bug e apresentam problema (não aparecem); É de revoltar um programador mas eis a solução:
1. Na collation da tabela coloque como "utf8_unicode_ci", geralmente a última opção.
2. Na página de conexão com o banco de dados faça o seguinte:
2.1. Coloque:
header('Content-Type: text/html; charset=utf-8');
E após a conexão, coloque:
mysql_query("SET NAMES 'utf8'");
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');
3. Não esqueça de por na sua página HTML, o código:
<meta charset="UTF-8" />
> Lembrando que a tag <meta> nesse estilo é de acordo com o HTML 5, e no mesmo não é valido o uso de outras charsets.
Abraços, boa sorte!
complemento:
Diéssica, bom te ver em um post meu :)
Obrigado pelas dicas, complementei meu aprendizado.
Bom, tudo depende da forma que você definiu a codificação dos arquivos, se você está trabalhando com UTF-8, e recebeu um arquivo codificado em ISO, obviamente vai dar problema na coleção de caracteres, o banco também deve estar na mesma codificação dos arquivos.
O problema é que a maioria dos códigos baixados são salvos codificados em UTF-8, aí dá esse problema mesmo, quando acontece isso, basta salvar na codificação certa.
Nem sempre o header resolve o problema, se meu arquivo foi salvo em ISO, e o header estiver definido pra UTF, vai dar problema .. nesse caso é bom igualar tudo, cabeçalhos, codificação e afins.
Entretanto, parabéns VitorCappellari, ótimo tópico !
:thumbsup:
Tu sugeriu um header com um charset de versão inferior e um meta charset de HTML5 :wacko:
Enfim, eu nesse caso, recomendo mais o
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
e não
Fiz um testes semana passada e o IE meio que se enrola com esse meta do HTML5. Tu deveria ter sido mais específico.
Quanto ao post, a primeira dica foi a melhor. Mas o mais importante não é bem isso que tu citou...
Devemos manter um padrão de codificação de acentos. O que confunde também é a existência do UTF-8 com BOM e sem BOM, nesse caso eu recomendo esses posts do William Bruno e outro do Alessandro:
:seta: http://wbruno.com.br/blog/2011/04/19/problemas-acentuacao-ajax-como-resolver/ (É pra AJAX, mas serve)
:seta: http://alessandrosantos.com.br/2008/10/28/problemas-com-a-codificacao-utf-8-em-php/
Me recomendaram esse do wbruno pra um sistema. Inclusive acho o post dele bem mais relevante. :thumbsup:
Se for um UTF-8 sem BOM e outro com BOM já vai dar erro de acentuação. E pior que não colocar meta charset, só iso-8859-1 e utf-8 no mesmo site...
Esse aqui fica meio inútil com tudo isso...
header('Content-Type: text/html; charset=utf-8');
Fazendo isso, não precisei nem recorrer pro charset iso-8859-1.
E meta charset duplicado, nunca :thumbsup: