Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] ucina plik .csv
Forum PHP.pl > Forum > PHP
marcinek37
Skrypt generuje plik .csv, który ucina się podczas jego ładowania w Excel wtedy, gdy wystąpi znak specjalny, np. °
Jak wiadomo, znaków specjalnych jest mnóstwo, więc zwyczajne str_replace nie wystarczy

próbowałem z htmlenties, jednak żaden z parametrów nie rozwiązał mojego problemu
więc co mogę zrobić?
Arcioch
Pokaż kod w jaki sposób zapisujesz dane do csv i tablice jaką próbujesz zapisać smile.gif
marcinek37
to nie ma znaczenia, plik .csv generuje się prawidłowo, w nowym office ładuje się bez problemu, ale starsze wersje wariują przez znaki specjalne, np. taki, jak podałem powyżej

chciałbym poznać nazwę funkcji, która każdy znak specjalny odpowiednio przerobi, np.
° -> &XXXXX;
Aqu
urlencode przerobi Ci to na coś takiego, ale zamieni też polskie znaki, spacje, więc nie wiem czy to Ci się przyda.
marcinek37
no właśnie coś takiego też raczej odpada
ma ktoś inny pomysł?
Aqu
A co jest nie tak z htmlentities? U mnie wydaje się ok.
° => Â&deg
marcinek37
a jakie ustawiasz parametry tej funkcji?
bo jak używam ten funkcji, ucina polskie znaki, nie widać ich nawet, gdy odtwarzam plik w notatniku
Aqu
  1. htmlentities($string, ENT_COMPAT , 'UTF-8');
marcinek37
gdy używam tego kodu, który dałeś powyżej, np. ten znak ° nie pokazuje się (po prostu jest ucinany), a cały plik zapisuję jako utf-8, bo używam:
  1. header('Content-disposition: filename='.date('Y-m-d', time()).'.csv');
  2. header('Content-Type: application/csv; charset=utf-8');
  3. header("Content-Transfer-Encoding: charset=utf-8");


gdy tego kodu nie używam, znak stopni celcjusza pokazuje się, ale znowu nie jest czytany przez starszy Office...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.