Ir para conteúdo

POWERED BY:

Arquivado

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

Poeta_Eletrico

MYSQ - CHARSET= UTF-8 ou CHARSET = ISO8859-1

Recommended Posts

Olá,

 

 

Procurarei ser DIDATICO:

 

Ferramentas para desenvolvimento: DW CS3;

Linguagem: PHP;

DB = mysql;

DB ENCODING = UTF-8.

==============================

 

1 - Imaginemos uma pagina INDEX.PHP;

 

2 - Nesta página INDEX, eu tenho um ARRAY dentro da celula (numa tabela, claro) que servirá como conteúdo da página.

 

3 - Logo, todas as informações serão carregadas aqui, nesta celula. Por exemplo: uma tabela com duas colunas, a da esquerda, o menu, a da direita, o conteudo de quem clica num dos links a esquerda;

 

4 - Ao clicar num link QUALQUER - para nosso exemplo, este tem tem uma variável para a URL principal p.ex.: "index.php?target=page_2";

 

5 - Logo - alguem que clicar neste link "ficará" na mesma página INDEX - mas passará um valor nesta URL ($_GET) - que é: page_2;

 

6 - Assim, tenho uma função que pega esta "var" -> "target" e o seu valor; e tenta satisfazer o "KEY" desse ARRAY;

 

7 - SE SATISFIZER -, pega o valor deste KEY - no nosso exemplo seria: "page_2", e acrescenta a ele ".php" - montando assim a página em questão ficando: page_2.

 

TUDO FUNCIONA PERFEITAMENTE - MAS POR UM DETALHE...

 

Se usar o parametro dentro do <head></head> = <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

 

As paginas carregadas desta maneira - mesmo com acento e sem estarem codificadas para specialchars - rodam numa boa - porque estar setado assim;

Contudo - se puxar alguma coisa do banco de dados - os caracteres ficam malucos.

 

Assim - PERGUNTO:

 

Ao inserir um dado com ACENTO - é melhor que o ENCODING do DB seja UTF-8 ou ISO8859-1?

 

Era isso.

 

Espero ter suprido de forma didatica o que vivencio aqui, o que poderá ajudar outros colegas com o mesmo problema.

 

Atenciosamente,

Fabiano Viana

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz 2 testes, coloca o mysql com utf-8 e assim:

 

 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

 

 

se não funcionar coloca o encoding em Latim1 e mantém o:

 

 

 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

exatamente como está acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz 2 testes, coloca o mysql com utf-8 e assim:

 

 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

 

 

se não funcionar coloca o encoding em Latim1 e mantém o:

 

 

 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

exatamente como está acima.

 

Ola,

 

 

Valeu pela dica!

 

Mas infelizmente não dá. Já tinha feito isto.

 

O lance é o seguinte:

 

  • Quando faço apenas um include com o ISO-8859-1 - todas as páginas fica acentuadas corretamente;
  • Agora, dentro de um dos includes, tenho uma CLASSE. Uma das funções da classe, é um ARRAY que monto, como disse acima, um menu. O menu (que é função da CLASSE) tem acento...daí pira...ou seja, quando passa pela INTERPRETAÇÃO DO PHP pra MOSTRAR ele faz isso; Só com o include não acontece!
  • Tentei usar HTMLSPECIALCHARS de todo jeito e afins inutilmente.

Mas a busca continua!

 

Abraços,

Fabiano Viana

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa o seu bd como utf8 mesmo...

e coloque isso no seu arquivo de conexão..

 

mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER_SET utf8");

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa o seu bd como utf8 mesmo...

e coloque isso no seu arquivo de conexão..

 

mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER_SET utf8");

 

Olha,

 

 

O que eu fiz, por enquanto, ja que nao encontrei nada ainda...foi:

 

a) Determinei no topo da pagina o meta: iso-8859-1.

B) Os includes rodam normal agora, seguindo o meu exemplo.

c) Agora, as paginas que estao na CLASSE - apenas se estiverem no padrao HTMLENTITIES...porque aí - quando sao interpretados pelo PHP, contendo o META: 8859-1, ele monta direitinho a pagina, e ao inserir no banco, a formatacao se mantem sem prejuido dos dados.

 

Mas acho que devo seguir buscando ate encontrar toda a politica correta pra isto.

 

Obrigado pela dica!

 

Fabiano Viana

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que tu quer é que os dados sejam gravados no DB em ISO ? porque não troca tudo pra ISO ?

 

Ola,

 

 

 

Ja pensei nisto, contudo, o problema que estou vendo é mais no tratamento do TEXTO quando vem do include - encapsulado na classe. Nao vi que o problema seja, dentro desta condicao, o charset ou encoding do banco, mas do proprio php. É o que estar me levando a crer. Assim sobrar um tempinho aqui, farei um pequeno texto e coloco aqui, pra que possamos, quem sabe, confabular a respeito...e quem sabe nao desenvolvemos um "modelo-regra" para resolver este assunto, que é tão chato e aparentemente simples de resolver, e que não é!

 

Abraços,

Fabiano Viana

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano Poeta_eletrico, vou te contar uma coisa, estou a procura deste mesmo problema tem séculos, mas a busca não termina...

Tenho uma página e to trabalhando só com require nela, e essas páginas que são chamadas no require são todos conteudos que vem do banco de dados, ou seja, todos os caracteres especiais vem com problema....mas eu creio que um dia iremos encontrar a solução!!!

 

Não consegui resolver o meu problema ainda, mas se tiver alguma coisa dou um toque por aqui!!

 

Abs galera

Teu

=)

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa o seu bd como utf8 mesmo...

e coloque isso no seu arquivo de conexão..

 

 

mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER_SET utf8");

deixou seu bd como utf8_unicode_si?

 

eu uso essas configurações e nunca tive problemas...

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.