Postagens

Mostrando postagens com o rótulo utf-8

MySQL - Gerando arquivos .csv com cabeçalho e acentuação diretamente de uma query no banco de dados

Já tratamos anteriormente de como gerar um arquivo a partir de uma consulta no MySQL porém não falamos especificamente de arquivos .CSV (aqueles separados por ponto e vírgula e que são reconhecidos diretamente pelos editores de planilha) Além disso não tratamos também de como inserir um cabeçalho com os nomes dos campos e nem como esta saída ser gerada diretamente com acentuação, importante para nós que trabalhamos com o português. Vamos começar com nosso exemplo padrão Para DOS SELECT * INTO OUTFILE 'C:/diretorio/arquivo.txt' FROM tabela Para Linux SELECT * INTO OUTFILE '/diretorio/arquivo.txt' FROM tabela As queries acima geram arquivos com acentuação no padrão UTF8, fora do padrão .csv e sem cabeçalho. Vamos transformar as queries acima para que a saída esteja no padrão .csv SELECT * FROM tabela INTO OUTFILE 'C:/diretorio/arquivo.csv' FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"' LIN...

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