Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Eksport do CSV - brak polskich znaków
hiper0007
post 22.02.2018, 12:01:32
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
aras785
post 22.02.2018, 12:10:35
Post #2





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


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')
Go to the top of the page
+Quote Post
hiper0007
post 22.02.2018, 12:44:19
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
b4rt3kk
post 23.02.2018, 17:44:14
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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).


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
hiper0007
post 23.02.2018, 20:14:52
Post #5





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
vokiel
post 23.02.2018, 20:18:13
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Pliki projektu masz w utf-8?
Przy imporcie wybierasz kodowanie utf-8?


--------------------
Go to the top of the page
+Quote Post
hiper0007
post 23.02.2018, 20:22:45
Post #7





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


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 ;(
Go to the top of the page
+Quote Post
trueblue
post 23.02.2018, 20:36:15
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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?


--------------------
Go to the top of the page
+Quote Post
hiper0007
post 23.02.2018, 21:23:23
Post #9





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
trueblue
post 23.02.2018, 21:31:09
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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

Ten post edytował trueblue 23.02.2018, 21:32:41


--------------------
Go to the top of the page
+Quote Post
b4rt3kk
post 24.02.2018, 02:50:26
Post #11





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 19:31