Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> polskie znaki w eksporcie do csv
atomas
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 22.01.2010

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


znalazłem w sieci opis sposobu eksportu tabeli bazy danych do pliku csv, ale mam problem z polskimi znakami. Kodowanie w bazie to utf8, chciałbym zmienić na windowsowe cp1250 i mi nie wychodzi. Pozostawienie utf8 też nie powoduje, że np. OpenofficeCalc odczytuje polskie znaki po ustawieniu mu kodowania na utf8. Co jest grane? Oto kod:

  1. $pdo = new PDO('mysql:host=***;dbname=***;charset=utf8', '***', '***');
  2. $usersRes = $pdo->query("SELECT * FROM subskrybenci WHERE mail<>'' AND aktywacja='1'");
  3. $users = $usersRes->fetchAll(PDO::FETCH_ASSOC);
  4.  
  5. $data = array();
  6.  
  7. $data[0]['imie'] = 'Imię';
  8. $data[0]['nazwisko'] = 'Nazwisko';
  9. $data[0]['wiek'] = 'Wiek';
  10. $data[0]['wspolnota'] = 'Wspólnota';
  11. $data[0]['telefon'] = 'Telefon';
  12. $data[0]['mail'] = 'E-mail';
  13. $data[0]['aktywacja'] = 'Aktywacja';
  14. $data[0]['grupa'] = 'Grupa';
  15. $data[0]['id'] = 'Id';
  16.  
  17. $datas = array_merge($data,$users);
  18.  
  19. foreach($datas as $key => $data){
  20. foreach($data as $key_s => $single_data){
  21. $datas[$key][$key_s] = iconv("UTF-8","cp1250", $single_data);
  22. }
  23. }
  24.  
  25. $filename = 'users.csv';
  26.  
  27. $FileHandle = fopen($filename, 'w+') or die("can't open file");
  28.  
  29. foreach($datas as $key => $data) {
  30. fputcsv($FileHandle, $data, ',', '"');
  31. }
  32.  
  33. fclose($FileHandle);
  34. header('Content-type: application/octet-stream');
  35. header('Content-Length: ' . filesize($filename));
  36. header('Content-Disposition: attachment; filename="subskrybenci.csv"');
  37. readfile($filename);
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Scalak
post
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 16
Dołączył: 21.03.2009

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


sprawdź kodowania:
- czy w bazie są utf-y
- czy ustawiłeś set names... z tego co widzę nie... dodaj w ostatim parametrze konstruktora PDO:
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")

jak będziesz miał utf w pliku to np. iconv przekonwertuj zmienne do docelowego kodowania.

Pozdrówa
Scalak

PS: sorry iconv jest... set names powinien załatwić sprawę

Ten post edytował Scalak 13.12.2013, 00:23:48
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 12:55