Ir para conteúdo

POWERED BY:

Arquivado

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

Videres

[Resolvido] HEADER em php

Recommended Posts

Boa tarde Pessoal,

 

Estou com um problema que ja encontrei muitas pessoas com dificuldades em minhas pesquisas... uma boa parte delas conseguiram resolver... mas tentei usar o mesmo metodo e não funfou...

 

Entao vamos la...

 

Minha dificuldade esta no uso do HEADER dentro do meu codigo pHP para n retornar caracteres "estranhos", com interrogacao ou caracteres dessa forma -> Ã...

 

Tentei resolver da seguinte forma:


<?php 
ob_start();
header("Content-Type: text/html; charset=ISO-8859-1",true);

?>

 

Tanto usando com o "ob_start();" ou n.. so consegui fazer funcionar no meu servidor local (xamp).. Quando passo para o web resulta no seguinte erro:

 

Cannot modify header information - headers already sent by

 

Obs.: Esse erro so acontece quando insiro o codigo a cima do header, porem quando n insiro os caracteres aparecem com interrogacoes, visto q todo o conteudo da minha pagina esta vindo do banco...

 

Ja tentei colocar no Header da minha pagina a tag:

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

 

mas como estou pegando o texto do banco com o formato UTF 8.. para remover interrogacoes teria q fazer com que o valor retornado pelo php virasse ISO-8859-1 por isso usei o header a cima...

 

So no servido web q n esta funcionando... se alguem puder me ajudar fico agradecido... abraço :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas como estou pegando o texto do banco com o formato UTF 8.. para remover interrogacoes teria q fazer com que o valor retornado pelo php virasse ISO-8859-1 por isso usei o header a cima...

 

So no servido web q n esta funcionando... se alguem puder me ajudar fico agradecido... abraço :grin:

Hein? Usar um header dizendo que o conteúdo da página é iso não vai fazer com que o conteúdo em utf8 seja convertido de forma "milagrosa", para isto existe o utf8_encode e utf8_decode.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem "Cannot modify header information - headers already sent by" significa que o header já foi enviado. Para corrigir o problema da codificação, insira entre a tag head do html isso:

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

 

E no banco de dados:

 

Character set = latin1 -- cp1252 West European

Collation: latin1_general_cs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aparentemente tem uma linha em branco antes do <?php... remova-a e vai funcionar...

 

Henrique,

Fiquei ate feliz, achando q isso resolveria mas n funcionou...

So pra deixar mais claro eu to conseguindo fazer a consulta normalmente, ele exibe o resultado da consulta...

 

Meu unico problema é quando utilizo o codigo a cima para alterar o "header" q ele dar a mensagem de erro a cima...

 

Estou pesquisando a respeito... acredito q deve ser alguma coisa q estou me esquecendo!!!

 

Fico agradecido desde já, pela força!

 

:huh:

se o banco é UTF, pq você mete um meta ISO???

 

o banco todo esta em UF8_unicode... com isso estou sofrendo problema nos navegadores q caracteres com acentos aparecem interrogações (?)... por i sso esto convertendo o resultado da consulta q exibira em minha pagina em ISO...

 

Testando com wamp.. funcionou perfeitamente o codigo a cima...

Mas no servidor WEB estou tendo dificuldade... ainda n sei o motivo... ehhehee

 

Mas fico agradecido desde ja pela força... srsrsrsr

 

Hein? Usar um header dizendo que o conteúdo da página é iso não vai fazer com que o conteúdo em utf8 seja convertido de forma "milagrosa", para isto existe o utf8_encode e utf8_decode.

 

Tentei dar uma olhada mas no meu servidor local... ele n oferece a UTF8_DECODE...

 

Mas vou verificar isso....

vlws ESerra!

..

Abss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei dar uma olhada mas no meu servidor local... ele n oferece a UTF8_DECODE...

Esta é uma função nativa do PHP a muito tempo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o banco todo esta em UF8_unicode... com isso estou sofrendo problema nos navegadores q caracteres com acentos aparecem interrogações (?)... por i sso esto convertendo o resultado da consulta q exibira em minha pagina em ISO...

 

Testando com wamp.. funcionou perfeitamente o codigo a cima...

Mas no servidor WEB estou tendo dificuldade... ainda n sei o motivo... ehhehee

 

Mas fico agradecido desde ja pela força... srsrsrsr

 

veja se isso resolve...

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");

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se isso resolve...

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");

 

Pow Criatividade... no meu servidor local funfou FILEUZIS... Assim q testar no WEb posto aqui... Acredito q essa seja a ssolucao mais adequada ja q a W3C recomenda trabalhar com o charset UTF8... Assim n vou precisar usar o ISO...

 

Assim q testar volto a postar.. vlws \o

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para a finalidade de alterar o charset, é recomendável utilizar a função mysql_set_charset ao invés de mysql_query.

 

Ambas vão fazer a mesma coisa, entretanto, para tal finalidade, não é recomendado mysql_query.

 

Caso queira ver a lista de charset suportados pelo mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes deste arquivo que seta o header você faz inclusão de algum outro?

 

Verifique em todos os arquivos PHP e remova as tags "?>" do final. Isso pode ajudar.

 

Certifique-se também de garantir que os arquivos php comecem com "<?" exatamente na primeira linha e primeira coluna do arquivo.

 

Certifique-se de ter salvo todos os arquivos com a marcação "SEM BOM".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certifique-se de ter salvo todos os arquivos com a marcação "SEM BOM".

 

Isso é bem importante cuidar, editores como o Dreamweaver, deixam como padrão o BOM. Já o outros editores deixam como padrão sem BOM. Eu utilizo o phpDesigner, e ele oferece configurações para sempre alterar a codificação do arquivo ao salvar. Já outras IDE podem não oferecer esse possibilidade, já que pode ser, ou não, habilitada nas configurações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se isso resolve...

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");

 

 

Oi criatividade tentei fazer oq você me sugeriu e no meu servidor local funfou 100% ... mas no web deu um erro...

 

como estou trabalhando no meu servidor com postgreSQL...

Tentei substituir mysql_query por pg_query

Deu o seguinte erro:

 

Query failed: ERROR: unrecognized configuration parameter "character_set_connection" 

 

Se alguem puder me dar uma orientacao fico agradecido...

Estou pesquisando a respeito em breve estarei postando a forma q funcionou... xD

 

Abracos

 

Antes deste arquivo que seta o header você faz inclusão de algum outro?

 

Verifique em todos os arquivos PHP e remova as tags "?>" do final. Isso pode ajudar.

 

Certifique-se também de garantir que os arquivos php comecem com "<?" exatamente na primeira linha e primeira coluna do arquivo.

 

Certifique-se de ter salvo todos os arquivos com a marcação "SEM BOM".

 

Em relacao ao BOM esta tudo ok..

Vlws pela dica! =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde pessoal,

Retornando novamente esse topico com a solucao adotada... ehhehe

 

No final das contas eu usei tanto dentro do codigo PHP

 

header("Content-Type: text/html; charset=ISO-8859-1",true);

que acredito q tenha gerado desse erro...

Cannot modify header information - headers already sent by

 

Quando seguir a Sugestao do Criatividade pude remover todos esses

 

header("Content-Type: text/html; charset=ISO-8859-1",true);

 

inseridos na minha pagina.. deixando apenas a

 

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

 

funcionou file no servidor local, porem no web deu pau..

 

Quando removi o que o criatividade indicou:

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");

 

Funcionou perfect... so com as metas deu para resolver o error... porem tinha colocado tanto

header("Content-Type: text/html; charset=ISO-8859-1",true);

que acredito q tenha causado o erro...

 

Como sei q isso é uma duvida recorrente espero que esse post possa ajudar outras pessoas q tenha passado por uma situacao parecida!

 

Sou muito grato pela cooperacao de vcs... abraço :clap:

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.