Ir para conteúdo
Fórum Script Brasil
  • 0

Salvar arquivo PHP em UTF-8, isso existe?


Leandro M. de Souza

Pergunta

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:

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.

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:

<!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.

:rolleyes: :rolleyes:

Editado por Leandro M. de Souza
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Resumindo

Se você salvar o arquivo em utf-8 e adicionar a meta charset em utf-8 a página será exibida perfeitamente

Se você salvar o arquivo em ANSI e adicionar a meta utf-8 vai exibir tudo errado

Para salvar em utf-8 no notepad: arquivo>>salvar como>>codificacao = utf-8

No DW: CTRL+J>>>Title e codification>>Codification = utf-8

Sendo que quando você fizer isso no DW ele adicionará/susbstituirá automaticamente a tag de codificação da pagina

Cagadas freqüentes

1. Usando includes: na pagina que chama colocar a codificação utf-8 e salvar a pagina chamada em ANSI

2. Exibir dados de banco de dados com colunas salvas em ISO em uma página com codificação utf-8 sem fazer a conversão de ISO para UTF-8

3. Ao cadastrar um dado vindo de uma página UTF-8 enviar ele em ISO para o banco (FCKEditor faz isso na configuração padrão) e tentar exibir os dados em utf8 depois sem fazer a conversão

Basicamente é isso, no fórum existem vários posts sobre esse assunto, pesquise e descobrirá mais informações caso precise

No entanto antes de você sair colocando utf-8 para todo lado, vale lembrar que nosso padrão é ISO_8859-1

Link para o comentário
Compartilhar em outros sites

  • 0

Norivan Oliveira

Olá Norivan...

Em primeiro lugar, muito obrigado pela ajuda, você realmente esclareceu completamente minha dúvida.

Inicialmente eu pensava que somente era necessário adicionar a meta declarando a codificação utf-8, e que não importava com o arquivo fosse salvo, agora é que fui perceber que tenho de salvá-lo optando por utf-8 e que é possível se fazer isso até mesmo no notepad.

Procurei sobre este assunto no Google e encontrei muitos textos relacionados, principalmente de pessoas tendo problemas com acentuação, algumas até com problemas semelhantes aos meus, a solução sempre era adicionar a meta charset utf-8 e realmente em alguns casos não funcionava.

Agora tudo funciona. :P :P

Um grande abraço e novamente, obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Quais seriam os perigos em adotar tudo como padrão UTF-8? estou enfrentando esse problema (fiz as páginas em vários pcs agora estou padronizando tudo) e estou deixando tudo utf-8. Pode haver problemas com serviços de terceiros voce quer dizer por exemplo?

Abraço,

T+ ae!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...