witam, mam problem ze znakami polskimi w tworzonym pliku csv.

Wszystko działa mi jak należy tylko bez polskich znaków.
Proszę o pomoc w jaki sposób mogę pozbyć się "krzaczków".

Kod pobierający dane z bazy:
  1. $query_zamowienia2 = $this->Zamowienia->get_zamowienia_full2();
  2. $this->load->helper('csv');
  3. if ($query_zamowienia2->num_rows() > 0) {
  4. foreach ($query_zamowienia2->result() as $val) {
  5.  
  6. if ($this->input->post('csv' . $val->id_zamowienia) == $val->id_zamowienia) {
  7. $data =array(
  8. array('NAZWA', 'ID', 'OPIS'),
  9. array($val->id_zamowienia, $val->nazwa, $val->opis));
  10.  
  11. array_to_csv($data, 'zamowienia'.date('Y-m-d H:i:s').'.csv');
  12. }
  13. }
  14. }


i funkcja w helper tworząca csv i ładująca do niego tekst:
  1. if ( ! function_exists('array_to_csv'))
  2. {
  3. function array_to_csv($array, $download = "")
  4. {
  5. if ($download != "")
  6. {
  7. header('Content-Type: application/csv');
  8.  
  9. header('Content-Disposition: attachement; filename="' . $download . '"');
  10. header("Pragma: no-cache");
  11. }
  12.  
  13. $f = fopen('php://output', 'w') or show_error("Can't open php://output");
  14. $n = 0;
  15. foreach ($array as $line)
  16. {
  17.  
  18. $n++;
  19. if ( ! fputcsv($f, $line, ';'))
  20. {
  21. show_error("Can't write line $n: $line");
  22. }
  23. }
  24. fclose($f) or show_error("Can't close php://output");
  25. $str = ob_get_contents();
  26.  
  27. if ($download == "")
  28. {
  29. return $str;
  30. }
  31. else
  32. {
  33. echo $str;
  34. }
  35. }
  36. }


jeżeli wywołam tablice na stronie tekst jest w porządku, wszystko poprawnie się wyświetla bez krzaczków, problem jest po otwarciu danych w exelu.

proszę o pomoc