Há alguns dias enfrento um problema comum relacionado com a acentuação em PHP + Html, recentemente consegui resolvê-lo, porém de uma forma estranha.
Logo abaixo explicarei o que esta acontecendo.
Possuo uma determinada página em php, onde o header está configurado para codificação UTF-8 e tudo funciona perfeitamente, o problema acontece quando incluo um arquivo externo em php, com a função include, pois todos os caracteres acentuados não são exibidos corretamente.
Em primeiro lugar tentei adicionar nos arquivos .php externos a seguinte linha:
header('Content-Type: text/html; charset=utf-8');
Quando acesso o arquivo principal recebo uma mensagem de erro dizendo que esta informação do cabeçalho já foi configurada previamente pelo arquivo principal e nada acontece, os erros continuam.
Ok, tentei codificar todos os acentos e pronto, tudo funcionou perfeitamente.
Todo os arquivos externos foram criados com o bloco de notas, porém tive uma enorme surpresa quando criei um arquivo .php no DreamWeaver e simplesmente salvei, sem incluir uma única linha declarando a codificação, apenas selecionei em Modify > Page Properties > Title/Encoding, a codificação UTF-8, porém o Dw não adicionou nenhuma linha no PHP e mesmo assim tudo funcionou perfeitamente, sem a necessidade de declarar esta informação no arquivo e nem codificar todos os acentos.
Fiz outros testes e realmente funciona perfeitamente quando o arquivo é criado ou salvado no Dw, ele funciona, porém quando crio e edito somente no bloco de notas, nada acontece.
Encontrei a seguinte informação em um Blog:
Aprendi que os sistemas de arquivos dos sistemas operacionais trabalham também com codificação. Ubuntu em ext3 por exemplo também trabalha com o UTF-8.
Ou seja, quando criamos um arquivo, ele é criado com o charset padrão do sistema. O Windows possui um próprio, então achei uma opção interessante no notepad++, converter para utf-8 (SEM BOM) (Formatar > Converter para UTF-8 (SEM BOM), então ele irá salvar o arquivo na codificação UTF-8.
O autor não se refere a arquivos .php em especifico, até porque ele aconselha adicionar a informação de header no script, a grande questão é que aqui só funciona se eu salvar pelo Dw.
Lembrando que no arquivo principal eu adicionei no header a codificação, porém nos arquivos externos não foi necessário e quando tentei, obtive um erro, porém simplesmente salvo pelo Dw, tudo funciona perfeitamente, já pelo bloco de notas, os acentos não aparecem, mesmo tendo a informação de codificação no arquivo principal
É como se o DreamWeaver alterasse o arquivo de certa forma, para fazê-lo aceitar os caracteres suportados pelo UTF-8, porém sem adicionar nenhuma linha no código, como pode?
Vou explicar melhor, supondo que este seja o arquivo principal:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Bla bla bla</title>
</head>
<body>
<?
include('arquivo.php');
?>
</body>
</html>
E este o arquivo incluído:
<?
echo('ááíçaçaíííçaçaçça íííça');
?>
Se eu crio o arquivo acima no bloco de notas, os acentos não aparecem e se eu criá-lo no DreamWeaver, exatamente da mesma forma, tudo funciona perfeitamente.
Como isso é possível? :blink: :blink:
Um grande abraço e desde já, fico grato pela ajuda.
Pergunta
Leandro M. de Souza
Salvar arquivo PHP em UTF-8, isso existe?
Olá pessoal...
Há alguns dias enfrento um problema comum relacionado com a acentuação em PHP + Html, recentemente consegui resolvê-lo, porém de uma forma estranha.
Logo abaixo explicarei o que esta acontecendo.
Possuo uma determinada página em php, onde o header está configurado para codificação UTF-8 e tudo funciona perfeitamente, o problema acontece quando incluo um arquivo externo em php, com a função include, pois todos os caracteres acentuados não são exibidos corretamente.
Em primeiro lugar tentei adicionar nos arquivos .php externos a seguinte linha:
header('Content-Type: text/html; charset=utf-8');
Quando acesso o arquivo principal recebo uma mensagem de erro dizendo que esta informação do cabeçalho já foi configurada previamente pelo arquivo principal e nada acontece, os erros continuam.
Ok, tentei codificar todos os acentos e pronto, tudo funcionou perfeitamente.
Todo os arquivos externos foram criados com o bloco de notas, porém tive uma enorme surpresa quando criei um arquivo .php no DreamWeaver e simplesmente salvei, sem incluir uma única linha declarando a codificação, apenas selecionei em Modify > Page Properties > Title/Encoding, a codificação UTF-8, porém o Dw não adicionou nenhuma linha no PHP e mesmo assim tudo funcionou perfeitamente, sem a necessidade de declarar esta informação no arquivo e nem codificar todos os acentos.
Fiz outros testes e realmente funciona perfeitamente quando o arquivo é criado ou salvado no Dw, ele funciona, porém quando crio e edito somente no bloco de notas, nada acontece.
Encontrei a seguinte informação em um Blog:
Fonte: http://helderam.wordpress.com/2009/03/12/u...mo-php-e-mysql/
O autor não se refere a arquivos .php em especifico, até porque ele aconselha adicionar a informação de header no script, a grande questão é que aqui só funciona se eu salvar pelo Dw.
Lembrando que no arquivo principal eu adicionei no header a codificação, porém nos arquivos externos não foi necessário e quando tentei, obtive um erro, porém simplesmente salvo pelo Dw, tudo funciona perfeitamente, já pelo bloco de notas, os acentos não aparecem, mesmo tendo a informação de codificação no arquivo principal
É como se o DreamWeaver alterasse o arquivo de certa forma, para fazê-lo aceitar os caracteres suportados pelo UTF-8, porém sem adicionar nenhuma linha no código, como pode?
Vou explicar melhor, supondo que este seja o arquivo principal:
E este o arquivo incluído:Se eu crio o arquivo acima no bloco de notas, os acentos não aparecem e se eu criá-lo no DreamWeaver, exatamente da mesma forma, tudo funciona perfeitamente.
Como isso é possível? :blink: :blink:
Um grande abraço e desde já, fico grato pela ajuda.
:rolleyes: :rolleyes:
Editado por Leandro M. de SouzaLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.