Autor Zpráva
peta
Profil
Zkousim udelat export do csv. V podstate uspech, az na takovy problemek, ze to neprevede spravne recke symboly. Nedali by se utf znaky zkonvertovat na neco jineho, treba html entity? Momentalne to resim tim, ze mam iconv nastaveny na IGNORE.

Kod vypada asi takhle:
$charset1 = "UTF-8";
$charset2 = "windows-1250";    //ISO-8859-1
$mode     = "//IGNORE";
                ob_start();
                header('Content-Encoding: '.$charset2);
                header('Content-Description: File Transfer');
                header('Content-Type: application/octet-stream; charset='.$charset2);
                header('Content-Disposition: attachment; filename='.$filename);
                header('Content-Transfer-Encoding: binary');
                header('Expires: 0');
                header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                header('Pragma: public');

                //echo "\xEF\xBB\xBF"; // UTF-8 BOM

$ind = @iconv($charset1, $charset2.$mode,implode(";",$cis_sem_indikatory));
echo 'druh;iduser;idprojekt;idklicaktivita;stagkod;nazev;anotace;ostitpj1;osjmeno1;osprijm1;ostitzj1;idostyp1;idospuvod1;idosnaklady1;ostitpj2;osjmeno2;osprijm2;ostitzj2;idostyp2;idospuvod2;idosnaklady2;ostitpj3;osjmeno3;osprijm3;ostitzj3;idostyp3;idospuvod3;idosnaklady3;termin;misto;'.$ind.';pril'."\n";
                while (($row = mysql_fetch_assoc($result1a))!==false)
                    {
                    foreach ($row as $key=>$value) {$row[$key] = preg_replace('/[\n\r\t\x00-\x20)]+/'," ",$value);} // odstran \n
                    echo @iconv($charset1, $charset2.$mode,arrayToCsv($row))."\n";
                    }
peta
Profil
Ha, tak ono reseni bylo jednoduche. Staci zmenit tyto radky
$charset2 = "UTF-8"; // radek 3
echo "\xEF\xBB\xBF"; // UTF-8 BOM // radek 14 odkomentovat
A protoze mam oboje charsety utf, tak tam iconv ani nemusi byt. A kdyz se odkomentuje utf-8 bom (pro utf16 je to echo chr(255) . chr(254);), tak to aspn muj excel pochopi, ze mu posilam utf a neukazuje klikyhaky.
ShiraNai7
Profil
peta:

1) content-encoding neslouzi pro charset
2) data v databazi jsou v jakem kodovani?

Pokud je vse v UTF-8, tak by nemel byt problem. Akorat muze byt potreba pri importu zvolit to UTF-8 kodovani.
peta
Profil
ShiraNai7:
Bez toho BOM to excel nepochopi, ze se jedna o utf. To jsem prave zkousel vcera asi hodinu nez jsem musel jit. Ale uz mi to funguje, tak to nemusis resit. Nebo se to aspon tak jevi, dokud nekdo neprijde hlasit chybu :)
Edit: A jeste abych odpovedel na tve dotazy, kodovani mam pohlidane (databaze utf, php utf). Jen jsem nevedel, jak excelu vnutit jine kodovani nez win-1250, tak jsem se snazil vsechno na to prekodovat a pri te prilezitosti jsem prave prisel o recke symboly.
Content-encoding, mozna, ale funguje to, tak to tam necham. Tohle je takova prvotina csv pro excel timto zpusobem na stahovani a ne primo do souboru.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0