Autor | Zpráva | ||
---|---|---|---|
rade.k Profil * |
#1 · Zasláno: 8. 7. 2016, 08:44:09
Ahoj,
mám problém s výpisem dat do XLS souboru. K tvorbě XLS používám pear.php.net/package/Spreadsheet_Excel_Writer. Data jsou uložena v databázi v kódování UTF-8 (utf8_general_ci), web je v UTF-8. XLS soubor ale požaduje kódování ISO-8859-2 (nevím proč, už jsem s kódováním XLS dokumentu válčil vícekrát a vždy toto kódování vyhrálo). Nyní mám na stránce, která generuje XLS soubor, následující kód: <?php header('Content-Type: text/html; charset=utf-8'); // zde jsem zkousel i iso-8859-2 require_once __DIR__ . '/php_writer.php'; ... $excel = new Spreadsheet_Excel_Writer(__DIR__ . '/file.xls'); $sheet =& $excel->addWorksheet('Sheet'); $sheet->setInputEncoding('ISO-8859-2'); // $sheet->write ma tri parametry - radek, sloupec, hodnota $sheet->write(0, 0, iconv('UTF-8', 'ISO-8859-2', $val)); // 0,0 je bunka A1 #$sheet->write(0, 0, mb_convert_encoding($val, 'ISO-8859-2', 'UTF-8')); #$sheet->write(0, 0, str_replace("ř", "\370", $val); // zde jsem mel v poli celou prevodni tabulku pro vsechnu CS diakritiku, "ř" je jako příklad - á,é,í,... mi to převedlo korektně, opět jen 6 znaků vyjmenovaných níže nikoliv. Všemi třemi způsoby zápisu do buňky, viz výše, jsem dosáhl správného zobrazení diakritiky, vyjma 6 znaků (ř, Ř, ž, Ž, ť, Ť), místo kterých mi to ukazuje (ľ, ®, ą, ©, », «). Zbylá diakritika je v pořádku. Data jsou skutečně UTF-8, to jsem testoval pomocí mb_detect_encoding , kterou jsem v zápisech výše také zkoušel namísto natvrdo vloženého UTF-8 .
Zkoušel jsem i str_replace těch 6 znaků (nahraď pole za pole) po iconv u, čili str_replace(array(...), array(...), iconv(...)) , ale beze změny.
Nějaká rada, jak donutit Excel zobrazovat i tyto znaky? Co dělám špatně, proč se mi ostatní diakritika zobrazuje a zrovna tyto znaky ne? Děkuji. |
||
nightfish Profil |
#2 · Zasláno: 8. 7. 2016, 12:47:46
Na první pohled to vypadá na rozdílné kódování znaků mezi ISO-8859-2 a CP1250.
Zkusil bych buď: 1) $sheet->setInputEncoding('UTF-8');
a data zapisovat v UTF-8 nebo 2) $sheet->setInputEncoding('windows-1250');
a iconv('utf-8', 'windows-1250', $val);
|
||
Časová prodleva: 8 let
|
0