Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Eksport do CSV - brak polskich znaków
Forum PHP.pl > Forum > Przedszkole
hiper0007
Witam!

Właśnie udało mi się poprawić kod, który już poprawnie eksportuje dane do pliku CSV. Problem w tym, że nie ma w nim polskich znaków...Zamiast ł jest ? i tak dalej. Gdzie musiał bym poprawić załączony kod, żeby w pliku csv pojaiwły się twn. ogonki wink.gif

  1.  
  2.  
  3. if(!isset($_SESSION['logg']))
  4. {
  5.  
  6. $_SESSION['logout']="Zaloguj się do aplikacji!";
  7. require_once "header.php";
  8. exit();
  9.  
  10. }
  11.  
  12. if(!isset($_POST['eksport_all']))
  13. {
  14.  
  15. $_SESSION['stronaerr']="Nieprawidłowy adres strony www!";
  16. require_once "header.php";
  17. exit();
  18.  
  19. }
  20.  
  21. $host = 'localhost';
  22. $user = 'root';
  23. $pass = 'Tescosinbin';
  24. $db = 'awizacja';
  25. $table = 'appt';
  26. $table2 = 'data_aw';
  27. $file = 'export';
  28. $csv_output = '';
  29.  
  30. $link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
  31. mysql_select_db($db) or die("Can not connect.");
  32.  
  33. $result = mysql_query("SHOW COLUMNS FROM ".$table." WHERE `Field` != 'color' AND `Field` != 'color2' AND `Field` != 'id'");
  34. $i = 0;
  35. if (mysql_num_rows($result) > 0) {
  36. while ($row = mysql_fetch_assoc($result)) {
  37. $csv_output.= $row['Field'].";";
  38. $i++;
  39. }
  40. $csv_output .= "\n";
  41. }
  42. $values = mysql_query("SELECT appt.awizacja, appt.data_awizacja, appt.godz_awiz, appt.godz_pod, appt.zamowienie, appt.nazwa, appt.kanal, appt.spedycja, appt.linii, appt.palety, appt.kartony, appt.rampa, appt.komentarz, appt.artykul, appt.il_zamowien, appt.nr_naczepy ,appt.tel_kierowcy, appt.status, appt.kod FROM ".$table.", ".$table2." WHERE appt.data_awizacja=data_aw.aw_data");
  43. while ($rowr = mysql_fetch_row($values)) {
  44. for ($j=0;$j<$i;$j++) {
  45. $csv_output.= $rowr[$j].";";
  46.  
  47. }
  48. $csv_output.= ";";
  49. $csv_output .= "\n";
  50. }
  51.  
  52. $filename = $file."_".date("Y-m-d_H-i",time());
  53. header("Content-type: application/vnd.ms-excel; charset=utf-8");
  54. header("Content-disposition: csv" . date("Y-m-d") . ".csv");
  55. header("Content-disposition: filename=".$filename.".csv");
  56.  
  57. print $csv_output;
  58.  



Wszystkie znaki z ogonkiem pokazuje jakos ? tylko ó jest normalnie smile.gif
aras785
Spróbuj takich nagłówków:

  1. header('Content-Encoding: UTF-8');
  2. header('Content-type: text/csv; charset=UTF-8');
  3. header('Content-Disposition: attachment; filename=nazwa_pliku.csv')
hiper0007
Cytat(aras785 @ 22.02.2018, 12:10:35 ) *
Spróbuj takich nagłówków:

  1. header('Content-Encoding: UTF-8');
  2. header('Content-type: text/csv; charset=UTF-8');
  3. header('Content-Disposition: attachment; filename=nazwa_pliku.csv')



Ta sama sytuacja ;( brak polskich znaków.... tylko ó jest poprawnie
b4rt3kk
Zaraz po połączeniu z bazą danych, a przed pobraniem jakichkolwiek danych ustaw sobie kodowanie:

  1. $link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
  2. mysql_select_db($db) or die("Can not connect.");
  3. mysql_query("SET NAMES utf8");


Poza tym - w jakim programie otwierasz później csv? Z tego co kojarzę to MS office otwiera domyślnie csv w windows-1250 (przynajmniej polski).
hiper0007
Cytat(b4rt3kk @ 23.02.2018, 17:44:14 ) *
Zaraz po połączeniu z bazą danych, a przed pobraniem jakichkolwiek danych ustaw sobie kodowanie:

  1. $link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
  2. mysql_select_db($db) or die("Can not connect.");
  3. mysql_query("SET NAMES utf8");


Poza tym - w jakim programie otwierasz później csv? Z tego co kojarzę to MS office otwiera domyślnie csv w windows-1250 (przynajmniej polski).


Właśnie dodałem i wypisałem echem i wszystkie słowa zawierają polskie znaki wink.gif ale już po eksportowaniu do csv już są znowu krzaczki ;( otwieram w MS office 2010.
vokiel
Pliki projektu masz w utf-8?
Przy imporcie wybierasz kodowanie utf-8?
hiper0007
Cytat(vokiel @ 23.02.2018, 20:18:13 ) *
Pliki projektu masz w utf-8?
Przy imporcie wybierasz kodowanie utf-8?


Ja właśnie eksportuje do pliku csv z bazy.
i jak wyświetle echem pobrane z bazy to mam polskie znaki.. ale jak zrobię

  1.  
  2. $filename = $file."_".date("Y-m-d_H-i",time());
  3. header("Content-type: application/vnd.ms-excel; charset=utf-8");
  4. header("Content-disposition: csv" . date("Y-m-d") . ".csv");
  5. header("Content-disposition: filename=".$filename.".csv");
  6.  
  7. print $csv_output;
  8.  


to już się w pliku csv pojawiają krzaczki ;(
trueblue
Piszesz, że otwierasz w MS Office 2010. To gdzie pojawia się dokładnie ten problem, w pliku CSV kiedy podglądasz go edytorem tekstowym, czy kiedy otwierasz w Excelu?
hiper0007
Cytat(trueblue @ 23.02.2018, 20:36:15 ) *
Piszesz, że otwierasz w MS Office 2010. To gdzie pojawia się dokładnie ten problem, w pliku CSV kiedy podglądasz go edytorem tekstowym, czy kiedy otwierasz w Excelu?


Problem pojawia się w momencie otworzenia MS Excela w formacie CSV. Krzaczki szlaczki wink.gif
Jak podglądam echem wyciągnięte rekordy zanim będą eksportowane do CSV wszystko jest dobrze czyli z bazy wyciąga dobrze są polskie litery.
trueblue
Poszukaj na forum analogicznego tematu. Był niedawno.
Inaczej musisz importować ręcznie - bezpośrednio z Excela i w kreatorze importu ustawić kodowanie UTF-8.

O: Temat: PHPExcel CSV problem z cp1250
b4rt3kk
Cytat(hiper0007 @ 23.02.2018, 20:14:52 ) *
Właśnie dodałem i wypisałem echem i wszystkie słowa zawierają polskie znaki wink.gif ale już po eksportowaniu do csv już są znowu krzaczki ;( otwieram w MS office 2010.


Czyli już teraz problem nie dotyczy eksportu danych, bo te są wystawiane poprawnie, tylko ich odczytu.
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.