PHP - Gerando arquivo em UTF-8 com fwrite() e utf8_encode()

Encontrei uma dica muito interessante do "cutmaster at fearlesss dot com" que postou no site php.net. Ele mostrou como gerar um arquivo realmente no formato UTF-8. Segue a tradução de seu post.
"Para aqueles que, como eu, gastaram muito tempo para entender porque fwrite() não criava arquivos utf-8 de verdade, aqui vai uma explicação que encontrei:
Tentei fazer algo com:"
<?php
myString = utf8_encode("Test with accents éèàç");
fh=fopen('test.xml',"w");
write($fh,$myString);
close($fh);


"Por alguma razão misteriosa, o arquivo gerado traz os acentos sem o padrão utf-8.

Tentei binário, etc. etc. e finalmente encontrei a solução.
Parece que fwrite() PRECISA ter a função utf8_encode() DENTRO de seus parâmetros, como segue abaixo."
<?php
$myString = "Test with accents éèàç";
$fh=fopen('test.xml',"w");
fwrite($fh,utf8_encode($myString));
fclose($fh);

Comentários

  1. Simples e eficiente, bati cabeça procurando uma solução antes de chegar aqui e encontrar mastigadinha. Obrigado pelo Post... Já tinha criado uma dúzia de funções, mandando á como á e o escambal, mas nada!

    ResponderExcluir
  2. Passei dias caçando esta solução. Muito obrigado mesmo!

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

PHP - Utilizando proxy e CURL para acessar servidores ou sites

MySQL - Cálculo de período de tempo entre duas datas com TIMESTAMPDIFF

MySQL - Completando quantidades fixas de caracteres com as funções LPAD() e RPAD()