Ir para conteúdo

Arquivado

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

Superwagtel

Configuração para exibição de textos

Recommended Posts

Estou desenvolvendo uma pequena Rede Social para comerciantes, mas estou com problemas na hora da exibição de textos.

 

As páginas PHP estão exibindo ERRO nos textos com acentuação, veja o exemplo do link abaixo:

https://www.lucroweb.net/Site/teste-1.php

 

Aqui o database MySQL não está configurado com a acentuação do HTML - Por isto a página PHP mesmo sendo UTF-8 apresenta erros.

 

Posso até alimentar o database com o código HTML correto, Mas quando as pessoas forem Postar seus Tópicos na Rede Social - As páginas PHP vão apresentar os textos tudo errado.

 

O que faço para evitar este PROBLEMÃO?

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Superwagtel.

 

Você precisa definir o mesmo charset em todos os atores e participantes do sistema.

 

Isso significa definir:

1 - No arquivo em si (isso você faz na sua IDE).

2 - No banco de dados (no momento da conexão e nas definições de tabelas/schema/colunas).

3 - No seu html.

4 - Na sua resposta da requisição.

 

Tudo isso está abordado nesses materiais:

https://rubsphp.blogspot.com.br/2011/07/problemas-com-charset-nunca-mais.html

https://forum.imasters.com.br/topic/510576-erro-acentos-trocado-por-interrogação/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço ao Matheus pela dica.

 

No inicio da  página já contém o seguinte meta:

 

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

 

Eu até consegui fazer o PHP apresentar os textos com acentuação correta do Português alterando os parâmetros do RecordSet:

 

De:

 

<?php echo $row_Servicos['servico']; ?>

 

Para

 

<?php echo htmlentities($row_Servicos['servico']); ?>

 

Mas seria melhor se eu digitasse apenas uma linha no código (por exemplo no meta) para não ter que ficar alterando cada parâmetro de RecordSet que eu tiver de inserir.

 

Alguém poderia me dar uma ideia sobre qual código inserir ou alterar?

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 minutos atrás, Superwagtel disse:

Mas seria melhor se eu digitasse apenas uma linha no código (por exemplo no meta) para não ter que ficar alterando cada parâmetro de RecordSet que eu tiver de inserir.

O material que eu postei explica exatamente como fazer isso.

Esse problema é extremamente comum e temos centenas de tópicos a respeito aqui no fórum.

 

Sem seguir aqueles passos, você não vai conseguir escapar do htmlentities() ou utf8_encode() manualmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas algo muito estranho ocorreu, fiz dois testes, um com o meta UTF-8 e outro com o meta 8859-1

E o meta 8859-1 apresentou o database MySQL corretamente já o meta UTF-8 apresentou o texto do mesmo database MySQL tudo errado.

 

Meta UTF-8
https://www.lucroweb.net/Site/teste-4.php

 

meta 8859-1
https://www.lucroweb.net/Site/teste-5.php

 

Testei em todos os navegadores e funcionou deste mesmo geito, meu receito é que isto ocorra somente em minha máquina sendo que preciso entregar um projeto perfeito que não apresente erros no futuro.

 

Alguém pode me explicar por que isto ocorreu e principalmente se posso continuar meu projeto com o meta 8859-1 sem maiores receios?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece pelo fato de que no seu banco ainda está como "caracteres latinos" / "iso-8859-1" e variantes, daí quando o navegador exibe, fica incompatível com o UTF-8 definido pelo seu código.

 

Você precisa verificar:

1 - Na definição do seu banco, tabelas, schemas, colunas, se alguma coisa não está definida com utf8, como "utf8_general_ci". Essa informação fica em collation.

 

2 - No momento de fazer sua conexão, você precisa definir para UTF8. Isso é importantíssimo. Nos links que eu passei existe essa informação para cada driver de conexão. No PDO por exemplo você pode fazer como nesse exemplo: https://forum.imasters.com.br/topic/563187-resolvido-sql-inject-quando-não-dar-para-impedir/?tab=comments#comment-2246837.

Mas eu não sei qual você está usando... Mysqli / PDO / Pgsql?

Poste apenas o trecho da sua conexão para darmos uma olhada nisso (tire informações de login/senha antes).

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por BelleFisio
      Olá! Bom dia.
       
      Estou fazendo uma página em html e css, a página contem textos e imagens (tem um título, abaixo uma foto, depois o corpo do texto (com parágrafos), mais 2 fotos posicionadas a esquerda (com uma legenda abaixo da foto) e utilizei um span ao lado das fotos para explicar mais detalhadamente a imagem (tipo um comentário ou explicação do texto). Usei divs para conter os espaçõs etc.
       
      Optei por fazer essa página à parte (fora do layout do meu site para depois acoplá-lo ao meu template) fiz isso para formatar os estilos e o texto de forma mais fácil. Até ai tudo bem, a pagina no navegador  redimensiona (obs. nessa pagina eu não coloquei responsividade ela esta redimensionando naturalmente, porém as fotos ficam bem pequenas em telas menores, e os comentários do texto (que ficam na tag span) diminuem de modo que não é possível ler, porém mantém toda a estrutura da página (igual na tela do desktop). Ou seja os textos de comentários das fotos não quebram a estrutura para descer abaixo da foto e manter o tamanho legível. 
       
      Já ao inserir o texto ao layout do site ele redimensiona  de forma desordenada e os textos se misturam e perco margens (os textos e as imagens ficam no limite da página ou seja ficam sem margens e dificulta a leitura)
       
      Eu tentei colocar no css as definições de estilos para os tamanhos de telas que queria, mas a página não responde as definições de responsividade. Alguém poderia me auxíliar nessa questão?
       
      Agradeço a atenção.  
       
       
×

Informação importante

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