Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcelobbt

UTF8 x acentuação no PHP. Como consigo?

Recommended Posts

Estava tentando trabalhar com o padrão ISO, mas na hora de salvar no mysql salvava errado os acentos.

 

Quando mudei para UTF8, consegui resolver o problema do banco, mas agora é nos textos em html e php que ficam com o problema de acentuação.

 

Tem alguma forma de resolver sem ter que ficar utilizando aquela codificação louca?

 

Exemplo: Quero digitar "á" ao invés de ter que digitar "á"

 

Agora estou usando o seguinte código nas páginas:

<meta http-equiv="Content-Type" content="text/html;charset= UTF8 COLLATE = utf8_general_ci" >

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa utf8 pra tudo e não vai ter erro

 

No mysql utf8_general_ci

Na configuração do banco usa SET NAMES utf8

e nas páginas a meta <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

 

 

Caso você já tenha salvo algum dado no banco é preciso reescreve-lo para quebrar a codificação antiga, e as vantagens de usar desta forma é que as buscas com LIKE identificam tanto as letras com e sem acentos.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Às vezes, simplesmente indicar UTF-8 na meta etiqueta, não adianta.

Experimente salvar os scripts formatados como ANSI as UTF-8, ou mesmo UTF-8.

 

Como faço isso?

 

Pois corrigi o código mas continuou com o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi colocando o banco em UTF-8 e as páginas em charset=ISO-8859-1.

 

Então na hora de ler do banco ou gravar, uso o código utf8-encode () e utf8-decode().

Compartilhar este post


Link para o post
Compartilhar em outros sites

:seta: #3

 

nota:

 

 

Esteja ciente de que o link no #3 não é a solução definitiva..

É apenas um tutorial que ensina como configurar de um modo geral. Procure entender o que é para entender como resolver.

Aplicar uma solução sem entender o que está fazendo torna-se pior na maioria dos casos, pois fica a mercê da sorte.

 

Para cada caso pode ter algo mais específico, fora do escopo do tutorial, por exemplo, é comum aplicarem diversas "soluções" que acabam por corromper dados ou causar outros diversos problemas que necessitam de ajustes diversos.

 

Por isso, tome muito cuidado quando vê alguém postando

 

"aplique utf8_decode"

"mude charset para ISO.."

"use htmlentities"

 

Esse assunto é bastante complexo para se resolver de forma simplória.

Para todo problema que encontrar, sempre faça diagnósticos.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este é que o problema, o servidor que estou hospedando não mostra os erros do php e tem uma configuração diferente da minha casa.

Isso tem me atrapalhado bastante.

 

Quando falou que eu só estava "escondendo a sujeira", achei que você tivesse uma solução prática, ou que tivesse uma recomendação mais concreta. De quzlquer forma, continuo tentando identificar os problemas e resolvendo como consigo,

Compartilhar este post


Link para o post
Compartilhar em outros sites

De qualquer forma, se a sua dificuldade é analisar possíveis erros e warnings, basta configurar o ambiente.

Configuração de log e eventos de erros do PHP

 

Todavia, isso não fará diferença pois uma má setagem do encoding/charset não dispara warnings e tampouco erros.

 

off

 

 

Isso que vc comentou soou como um deboche :seta: Quando falou que eu só estava "escondendo a sujeira", achei que você tivesse uma solução prática, ou que tivesse uma recomendação mais concreta

 

Para lhe fornecer uma "recomendação mais concreta" é necessário fazer diagnósticos e análises no seu ambiente e sistemas.

É inviável pois caracteriza-se numa prestação serviço.

Isso aqui não é suporte técnico particular.

Esteja ciente.

[/spolier]

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que a melhor maneira de se resolver isto, seja utilizando um padrão para tudo. Quando começar seus projetos, certifique-se de configurar sua IDE de desenvolvimento para salvar todos os arquivos (PHP, HTML, CSS etc) no padrão UTF-8 sem BOM.

Nos seus arquivos HTML, utilize cabeçalhos que identifiquem a codificação UTF-8:

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

Quando for utilizar banco de dados, utilize a codificação UTF-8 ao criar o banco e ao criar suas tabelas:

CREATE TABLE test (coumn_test CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);

Assim você evita ficar utilizando funções como utf8_*, htmlentities, mb_detect_encoding etc. Se você padronizar tudo desde o começo, não terá problemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
De qualquer forma, se a sua dificuldade é analisar possíveis erros e warnings, basta configurar o ambiente.http://forum.imasters.com.br/topic/447379-configuracao-de-log-e-eventos-de-erros-do-php/'>Configuração de log e eventos de erros do PHP Todavia, isso não fará diferença pois uma má setagem do encoding/charset não dispara warnings e tampouco erros. off

Isso que vc comentou soou como um deboche :seta: Quando falou que eu só estava "escondendo a sujeira", achei que você tivesse uma solução prática, ou que tivesse uma recomendação mais concreta Para lhe fornecer uma "recomendação mais concreta" é necessário fazer diagnósticos e análises no seu ambiente e sistemas.É inviável pois caracteriza-se numa prestação serviço.Isso aqui não é suporte técnico particular.Esteja ciente.[/spolier]

Peço desculpas pela forma que escrevi. Nunca tive a intenção de debochar ou de solivitar um suporte. Só achei um pouco mais vago do que eu esperava.

 

Creio que a melhor maneira de se resolver isto, seja utilizando um padrão para tudo. Quando começar seus projetos, certifique-se de configurar sua IDE de desenvolvimento para salvar todos os arquivos (PHP, HTML, CSS etc) no padrão UTF-8 sem BOM.Nos seus arquivos HTML, utilize cabeçalhos que identifiquem a codificação UTF-8:

Quando for utilizar banco de dados, utilize a codificação UTF-8 ao criar o banco e ao criar suas tabelas:
CREATE TABLE test (coumn_test CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
Assim você evita ficar utilizando funções como utf8_*, htmlentities, mb_detect_encoding etc. Se você padronizar tudo desde o começo, não terá problemas.
Eu bem que tentei padronizar tudo, mas o UTF8 não reconhecia os acentos na página e no formato ISO o banco não salvava corretamente. Creio que o problema esteja no meio do caminho, no servidor, onde não tenho acesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.