Avatar billede jacobs12 Nybegynder
18. februar 2012 - 14:10 Der er 2 kommentarer

Generere csv fil i utf-8 format

Hej eksperter.

Når jeg generere en csv fil, bliver indholdet ikke gemt i utf-8 format altså æøå ser forkert ud?

Jeg har søgt en del på nettet med det virker ikke bare at lægge en hedder ind som her i

header("Content-Type: text/csv; charset=UTF-8");

Min kode ser sådan her ud:

function query_to_csv($db_conn, $query, $filename, $attachment = false, $headers = true,$campaignid) {
     
$querykeys = "SELECT * FROM tabel WHERE (Type='1')";
       
$resultkeys = mysql_query($querykeys, ****) or die(mysql_error());

$headlabelid = array();
$headlabel = array();
while($rowkey = mysql_fetch_array($resultkeys))
{
$headlabelid[] = "tabel".$rowkey['Id'];
$headlabel[] = str_replace(","," ",$rowkey['Question']);
};

        if($attachment) {
            // send response headers to the browser
            header("Content-Type: text/csv; charset=UTF-8");
            header( 'Content-Disposition: attachment;filename='.$filename);
            $fp = fopen('php://output', 'w');
        } else {
            $fp = fopen($filename, 'w');
        }
       
        $result = mysql_query($query, ****) or die( mysql_error( *** ) );
   
        if($headers) {
            // output header row (if at least one row exists)
            $row = mysql_fetch_assoc($result);
            if($row) {
           
            $intCount = 0;
            $newkeyarr = array_keys($row);
            foreach ($headlabelid as $value) {
                $rewiterows = str_replace($value,  $headlabel[$intCount],$newkeyarr);
                $newkeyarr = $rewiterows;
                $intCount++;
            }
           
           
           
                fputcsv($fp, $newkeyarr);
                // reset pointer back to beginning
               
                mysql_data_seek($result, 0);
            }
        }
       
       
       
       
        while($row = mysql_fetch_assoc($result)) {
            fputcsv($fp, $row);
        }
       
 
        fclose($fp);
    }
Avatar billede olebole Juniormester
18. februar 2012 - 16:17 #1
<ole>

Skal filen læses af Excel, skal du først tilføje BOM tegn. Prøv at læse denne lille artikel

/mvh
</bole>
Avatar billede jacobs12 Nybegynder
19. februar 2012 - 08:58 #2
Hej </bole>

Mange tak for artiklen :)

Jeg kan dog stadig ikke få det til at virke.
Hver gang jeg tilføjer linien her
$fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));

fejler min php side?

Jeg har prøvet at tilføre den forskellige stedet i scripetet. Men siden giver bare en 404 når linjen er med???

Jeg ville tror at $fputs(....) skal ind efter  $fp = fopen('php://output', 'w');


        if($attachment) {
            // send response headers to the browser
          header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.$filename);
header('Content-Transfer-Encoding: binary');
         
            $fp = fopen('php://output', 'w');
        } else {
            $fp = fopen($filename, 'w');
       
        }
       
    $fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester