• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Knitter

Escrever ficheiro em UTF-8

8 mensagens neste tópico

Boas,

Estou a criar um sistema de RSS Feeds para um site usando PHP para gerar o ficheiro XML, no entanto não encontro função nenhuma em PHP que me permita dizer qual o enconding no qual pretendo escrever os dados.

Alguém me consegue dizer que função me está a escapar? Não pretendo ler o ficheiro, apenas pegar em alguns dados que estão em ISO-8859-1 e escrevê-los para o XML como UTF-8.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmm. utf8_encode(); ??

Não te esqueças de guardar o ficheiro PHP com encoding UTF-8 (a maior parte dos editores decentes permitem escolher, penso eu), assim como usares headers adequados. Assim poupam-se chatices. Ah, e se o editor permitir escolher a inclusão do BOM (Byte Order Mark), desactiva essa opção, alguns browsers não suportam, e podes ter problemas com sessões no PHP.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado vou ver essa função, embora isso não me faça muito sentido, não deviam ser as funções de escrita de ficheiros a permitir escolher o encoding no qual o ficheiro vai ser guardado? Usando essa função transformo uma string nesse enconding mas se a enviar para uma fnção de escrita como garanto que o encoding é respeitado?

Não percebi algumas coisas: guardar o ficheiro PHP como utf8?, porquê? Usar headers?, o que é que usar headers me vai ajudar e o que é que não usar me vai causar? Problemas com sessões? onde raio falei em sessões? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um pequeno código de teste que estive a fazer:

$data =  utf8_encode(file_get_contents("news/2cvdevolta.html"));

$handle = fopen("damn.txt", a);
fwrite($handle, $data);
fclose($handle);

Resulta num ficheiro em ANSI.... o que é que estou a fazer errado?

Edit:

Afinal o ficheiro está em UTF-8 mas os editores não o reconhecem como tal....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

os ficheiros não guardam nenhuma informação sobre qual o encoding em que foram gravados, logo terás de ser tu a dizer ao programa qual é o encoding (caso contrário, provavelmente irá usar o encoding default).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já resolvi o problema era do Notepad++ que não indicava correctamente o encoding embora mostrasse correctamente os dados.

Mas em relação às outras questões ainda não tenho resposta, pelo menos gostava de saber em que sentido é que headers me ia ajudar ou prejudicar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já percebi, tu queres mesmo escrever o ficheiro para o disco, pensei que quisesses gerar XML e enviar para o browser e (por algum motivo estranho e exótico) tivesses a ter problemas em guardar o ficheiro em UTF-8! Mas afinal parece que não. Portanto podes esquecer a questão dos headers, era só mesmo uma precaução para garantir que o ficheiro iria ser enviado (e os browsers iriam reconhecer como tal) em UTF-8, usando qualquer coisa destes género: header('Content-Type: text/xml; charset=utf-8');.

Em relação ás sessões, era só um aparte ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah! Nesse caso sei para que servem os headers, estava mesmo a pensar que havia alguma coisa a ter em atenção... Sim o objectivo é escrever para o disco, o RSS não tem uma actualização muito frequente, não vale a pena gerar dinâmicamente quando posso fazer um ficheiro que não será alterado por vários dias, senão semanas.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora