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.
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0