Ir para conteúdo

POWERED BY:

Arquivado

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

ORisonho

Acentuação html vs PHP vs my/sql

Recommended Posts

E ai pessoal...nunca imaginei que teria que abrir um tópico sobre algo que parece ser simple smas que eu to apanhando.

 

Eu sempre construo meus códigos com essa tag principal

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Nunca tive problemas em mecher com xhtml, html ou até mesmo o php, mas HOJE mechendo num código aqui e os textos que vem do BANCO DE DADOS MY/SQL estão vindo com ERRO na hora da acentuação,dai procurei na internet que eu deveria colocar esse seguinte código:

<?php header("Content-Type: text/html; charset=ISO-8859-1",true) ;?>
Mas quando faço isso ele INVERTE, ou seja, as informações do BANCO DE DADOS MY/SQL são mostradas com acentuação correta, mas as que antes estavam todas corretas (php, html, xml) ficam todas ERRADAS, dai já viu...to apanhando aqui pra isso sem saber uma maneria de fazer essa bendita acentuação funcionar para as informações do Banco de Dados sem prejudicar os outros textos.

 

Desde já agradeço a ajuda de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo use assim no HTML:

<?php
header("Content-Type: text/html; charset=ISO-8859-1",true);/*esta parte é boa para força o navegador a usar a codificação "correta"*/
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

e no mysql converta sua codificação que provavelmente esta e utf-8 para latin1

 

Leia: http://dev.mysql.com/doc/refman/5.0/en/charset-we-sets.html

 

;) tenho quase certeza que as suas tabelas mysql estão em utf-8 ou outra codificação use latin1, exemplo na hora de criar:

CREATE TABLE `acessos` (
  `key` int(11) NOT NULL,
  `login` varchar(15) NOT NULL,
  PRIMARY KEY  (`key`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

você pode alterar tem varias alternativas ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aê que a situação complica....meu banco esta todo em

latin1_swedish_ci
O que naturalmente faria eu não ter esse problema de acentuação da qual estou passando.

 

Mas vou testar o seu código e ver se da certo aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se entendi bem, é o contrário do que o silverfox postou. O HTML está em utf8 e o banco, em latin1. Mas isso é o menos importante.

 

O que importa é manter TUDO na mesma codificação. Eu prefiro UTF-8, que é padrão que vem sendo adotado pela maioria das aplicações, seja WEB ou desktop.

 

Veja:

http://www.rberaldo.com.br/blog/2009/11/06/problemas-com-codificacao-acentos-nao-interpretados/

 

 

Preste atenção à codificação do arquivo, definido no editor de textos. Muitos não dão atenção a esse detalhe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim no caso se for preferir usar utf-8 então faça assim NO html:

<?php
header("Content-Type: text/html; charset=UTF-8",true);/*esta parte é boa para força o navegador a usar a codificação "correta"*/
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Veja se resolve amigo, lembre-se utf-8 é utf-8 e iso é iso portanto poderá ocorrer conflitos ao usar ambos na mesma aplicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

apenas adicionar header() e meta-tag não vai resolver. o problema é conflito de codificação.

 

Ou você usa utf8_encode() nos valores vindos do banco ou converte o banco para utf8

 

a segunda opção é melhor. Parece mais difícil, ams dá para fazer tudo com comandos SQL, rapidamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro que eu sei disso, o que eu quero dizer é que se for usar utf-8 no sql use utf-8 o html/php tambem e vice-versa, tambem pode ser um problema ao usar o bloco de notas, salvando o arquivo como utf-8 ao inves de ansi, em arquivos com include isto tambem pode influenciar(salver o php em utf-8), sempre salve o documento em ANSI.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já achei meu problema, sõ não sei como soluciona-lo.

 

Eu uso um códico para "chamar" a pagina que esta com as informações do banco

<?php
	$p = $_GET['id'];
 /**/if ( !empty($p) && file_exists('./paginas/' . $p . '.php') && stristr( $p, '.' ) == False )
		{
   		$file = './paginas/' . $p . '.php';
		}
	    else
		{
   		$file ='./paginas/venda.php';
		}

  /**/include $file;
?>

Tipo, se eu for na página VENDA e carregala SOZINHA no navegador ela vem toda certa sem erros na acentuação, mas quando eu a "chamo" por esse código ai ai ela gera esse erro na acentuação. Deve ser algo simples mas que to apanhando...^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa me entrometer, mas ja me entrometendo... http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif

 

No caso é melhor colocar o banco como utf-8?

 

Tipow, se em fizer um cadastro direto no banco ou por meio de formulario, a informação estará sempre com a formatação correta?

 

Malz... http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso é melhor colocar o banco como utf-8?

 

Tipow, se em fizer um cadastro direto no banco ou por meio de formulario, a informação estará sempre com a formatação correta?

 

O ideal é manter tudo na mesma codificação. Acho utf-8 melhor. E não sou o único, uma vez que essa codificação vem sendo adotada por diversas aplicações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já achei meu problema, sõ não sei como soluciona-lo.

 

Eu uso um códico para "chamar" a pagina que esta com as informações do banco

<?php
	$p = $_GET['id'];
 /**/if ( !empty($p) && file_exists('./paginas/' . $p . '.php') && stristr( $p, '.' ) == False )
		{
   		$file = './paginas/' . $p . '.php';
		}
	    else
		{
   		$file ='./paginas/venda.php';
		}

  /**/include $file;
?>

Tipo, se eu for na página VENDA e carregala SOZINHA no navegador ela vem toda certa sem erros na acentuação, mas quando eu a "chamo" por esse código ai ai ela gera esse erro na acentuação. Deve ser algo simples mas que to apanhando...^_^

 

Talvez seja a codificação diferentes nos arquivos PHP, tipo um foi salvo em utf-8 e outro em ansi, eu recomendo usar utf-8 somente no meta, agora na hora de salvar o arquivo salve todos ANSI ou todos em utf-8, provavelmente é codificação diferentes entre os "*.php" já que a falha é somente no uso do include, pode ter certeza é codificação diferente ;)

 

De uma olhada, se você usa o notepad(bloco de notas), aperte em salvar como... no bloco de notas e escolha estas opções:

direto: http://img85.imageshack.us/img85/896/imagemma.jpg

Imagem Postada

 

abra todos arquivos e escolha sua codificação preferida, ou ANSI ou utf-8.

todos devem usar as mesma codificação ;)

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.