Eksport do CSV - brak polskich znaków

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



session_start();
 
if(!isset($_SESSION['logg']))
{
     
    $_SESSION['logout']="Zaloguj się do aplikacji!";
    require_once "header.php";
    exit();
 
}
 
if(!isset($_POST['eksport_all']))
{
     
    $_SESSION['stronaerr']="Nieprawidłowy adres strony www!";
    require_once "header.php";
    exit(); 
     
}
 
$host = 'localhost';
$user = 'root';
$pass = 'xxxx';
$db = 'awizacja';
$table = 'appt';
$table2 = 'data_aw';
$file = 'export';
$csv_output = '';
 
  
$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("Can not connect.");
  
$result = mysql_query("SHOW COLUMNS FROM ".$table." WHERE `Field` != 'color' AND `Field` != 'color2' AND `Field` != 'id'");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output.= $row['Field'].";";
$i++;
}
$csv_output .= "\n";
}
$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");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
     
 
$csv_output.= $rowr[$j].";";
$rowr[$j]=iconv(mb_detect_encoding($rowr[$j]), "UTF-8", $rowr[$j]);
}
 $csv_output.= ";";
 $csv_output .= "\n";
}
  
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");
 
print $csv_output;
exit;

Z góry dzięki ;) Męczę się już z tym 2 dni i nie mogę nic wykombinować. Proszę o pomoc jakiegoś specjalistę

0

Nie sprawdzasz wyniku mb_detect_encoding.
Według dokumentacji PHP http://php.net/manual/en/function.mb-detect-encoding.php

Returns: The detected character encoding or FALSE if the encoding cannot be detected from the given string.

Ja bym sprawdził, czy tutaj przypadkiem nie wychodzi ci jakiś false a później szukał dalej.

0
dualjack napisał(a):

Nie sprawdzasz wyniku mb_detect_encoding.
Według dokumentacji PHP http://php.net/manual/en/function.mb-detect-encoding.php

Returns: The detected character encoding or FALSE if the encoding cannot be detected from the given string.

Ja bym sprawdził, czy tutaj przypadkiem nie wychodzi ci jakiś false a później szukał dalej.

WItam!

Mógłbyś mi rozpisać bardziej dokładnie :) ja dopiero się uczę i tak nie dokonca wiem co masz na myśli ;) z góry dzięki

0

Pliki *.php lub tabele nie są w kodowaniu UTF-8.
Po połączeniu z bazą wykonaj:
mysqli_query("SET NAMES UTF8");

i sprawdź czy sam print wyrzuca polskie znaki na ekran

0

Robisz coś takiego:

$rowr[$j]=iconv(mb_detect_encoding($rowr[$j]), "UTF-8", $rowr[$j]);

Ja bym tak nie ufał temu mb_detect_encoding.
Może właśnie zwraca ci false. W ten sposób nigdy się o tym nie dowiesz.

Spróbuj najpierw ten wynik przypisać do zmiennej a później coś z tym zrobić.

$detectedEncoding = mb_detect_encoding($rowr[$j]);

if($detectedEncoding){
// Kod dla poprawnego wykrycia
// (...)
} else {
// Oj, coś nie poszło. Co teraz?
// (...)
}

Jeśli tutaj okaże się, że wszystko gra, szukałbym problemu w kodowaniu bazy danych lub samej metodzie pobierania danych z bazy. Może trzeba ustawić kodowanie gdzieś na początku? To trochę stara metoda odpytywania bazy mysql.

0
Trzeźwy Kret napisał(a):

Pliki *.php lub tabele nie są w kodowaniu UTF-8.
Po połączeniu z bazą wykonaj:
mysqli_query("SET NAMES UTF8");

i sprawdź czy sam print wyrzuca polskie znaki na ekran

Jeżeli dodałem po nawiązaniu połączenia z bazą mysqli_query("SET NAMES UTF8");

aąeęsścćoólł -> aÄ…eÄ™sĹ›cćoĂłlĹ‚

jeżeli usunę ten zapis to:

aąeęsścćoólł -> a?e?s?c?oól?

więc coś na pewno jest z kodowaniem, bo jak usunę ten zapis, który kazałeś dodać to wygląda lepiej i chociaż ó jest ;)

Jakieś inny pomysł ;(

0

Masz ustawione błędne kodowanie w bazie MySQL dlatego nie masz polskich ogonków w pliku .csv
Sprawdź jakie masz kodowanie w bazie i kombinuj dalej, choć ja bym już nie brnął w to dalej i stworzył bazę na kodowaniu utf8.

0
Trzeźwy Kret napisał(a):

Masz ustawione błędne kodowanie w bazie MySQL dlatego nie masz polskich ogonków w pliku .csv
Sprawdź jakie masz kodowanie w bazie i kombinuj dalej, choć ja bym już nie brnął w to dalej i stworzył bazę na kodowaniu utf8.

W bazie zarówno baza jak i tabela orz każda kolumna jest w utf-8-polish właśnie sprawdziłem.
Jak dodałem zapis :

$kodowanie=mysql_query('SET NAMES \'utf8\'');

i echem wyświetliłem to wyszło poprawnie ;) wszędzie są polskie znaki ale jak dodałem skrypt import do csv to standardowo krzaczki ;) TysksÄ…fgdÄ™fĹ‚dgĂłerĹ„kklĹ›lkć

;(

0

A załącz tu na forum jakiś przykładowy wynikowy plik CSV, ale nie jako komentarz, tylko załącznik.

0
dualjack napisał(a):

A załącz tu na forum jakiś przykładowy wynikowy plik CSV, ale nie jako komentarz, tylko załącznik.

0

title
No ja tu mam polskie znaki. Myślę, że masz coś źle ustawione w programie w którym to czytasz.

0
dualjack napisał(a):

title
No ja tu mam polskie znaki. Myślę, że masz coś źle ustawione w programie w którym to czytasz.

Ok. Ale to jest screen z excela? Tutaj wlasnie chodzi oto, zeby byly w Excelu. Jak zrobilem do notatnika eksport to tez mialem. Bo jak wyswietle sobie na stronie echem to tez mam polskie znaki:) ale juz jak rzuce do excela to jest problem.

0
mariuszkoralczyk napisał(a):
dualjack napisał(a):

title
No ja tu mam polskie znaki. Myślę, że masz coś źle ustawione w programie w którym to czytasz.

Ok. Ale to jest screen z excela? Tutaj wlasnie chodzi oto, zeby byly w Excelu. Jak zrobilem do notatnika eksport to tez mialem. Bo jak wyswietle sobie na stronie echem to tez mam polskie znaki:) ale juz jak rzuce do excela to jest problem.

Bo tak :) tylko jak wlasnie zmienic. Zeby bez ingerencji czlowieka po otwarciu Excela. Od razu wtswietlaly sie polskie znaki...

1 użytkowników online, w tym zalogowanych: 0, gości: 1