notepad++ wykrywa go jako UTF-8 z BOM w formacie UNIX i wszystko wyswietla sie poprawnie
OpenOffice przy ustawieniu Unicode UTF-8 wszystko wyswietla sie poprawnie (brak krzakow)
otwieram wiec skryptem php w ktorym mam na poczatku:
Kod
header('Content-type: text/html; charset=utf-8');
lacze sie przez PDO do mysql:
Kod
$this->db = new PDO('mysql:host='.$db_config['host'].';dbname='.$db_config['db_name'].';encoding=utf8', $db_config['username'], $db_config['password']);
$this->db->exec("SET CHARACTER SET utf8");
$this->db->exec("SET NAMES utf8");
$this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$this->db->exec("SET CHARACTER SET utf8");
$this->db->exec("SET NAMES utf8");
$this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
i wgrywam csv poleceniem load
Kod
$this->db->query('LOAD DATA LOCAL INFILE "'.realpath(dirname(__FILE__).'/../../'.$sciezka_csv).'"
INTO TABLE `'.$baza_danych_temp.'`
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY "\""
LINES TERMINATED BY "\n"
IGNORE 1 LINES
');
INTO TABLE `'.$baza_danych_temp.'`
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY "\""
LINES TERMINATED BY "\n"
IGNORE 1 LINES
');
cala baza i kazda z poszczegolnych kolumn ma utf8_general_ci no i sa krzaki. Wiele razy sie meczylem z kodowaniem i tutaj chyba wszystko zrobilem zeby bylo odpowiednie a mimo tego i tak nadal jest zle, no nie mam pojecia czemu :/
ROZWIAZANIE
jakby ktos jeszcze mial problem z tym to w poleceniu LOAD DATA LOCAL INFILE brakuje informacji w jakim kodowaniu ma to wrzucac, czyli linijki:
Kod
CHARACTER SET utf8
prawidlowe polecenie brzmi zatem:
Kod
$this->db->query('LOAD DATA LOCAL INFILE "'.realpath(dirname(__FILE__).'/../../'.$sciezka_csv).'"
INTO TABLE `'.$baza_danych_temp.'`
CHARACTER SET utf8
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY "\""
LINES TERMINATED BY "\n"
IGNORE 1 LINES
');
INTO TABLE `'.$baza_danych_temp.'`
CHARACTER SET utf8
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY "\""
LINES TERMINATED BY "\n"
IGNORE 1 LINES
');
sprawa rozwiazana, wszystko sie wrzuca w prawidlowym kodowaniu