Kodowanie znaków w bazie danych

Odpowiedz Nowy wątek
2018-07-26 08:41
0

Witam,
Pobieram sobie z API nazwy drużyn piłkarskich, podczas pobierania wszystkie znaki w nazwach wyświetlają się poprawnie natomiast gdy zapakuje je do bazy danych to wysypują się np. zamiast Górnik Zabrze jest 'Górnik Zabrze', zamiast Wisła Kraków jest 'WisÅ‚a Kraków' itp. Pokończyły mi się pomysły co to może być. Zmieniałem już kodowanie w bazie, w tabelach, używałem funkcji iconv(). Baza musi mieć kodowanie, że tak to ujmę ogólne bo nie mam w niej tylko drużyn polskich ale są i portugalskie, brazylijskie itp.

Baza ma kodowanie utf8_general_ci
Kolumny 'od nazw' varchar(255) utf8_general_ci
W funkcji iconv() koduje z ISO-8859-2 na UTF-8 lecz nie jestem pewny, czy dane w API są w ISO-8859-2(nigdzie nie mogę znaleźć o tym info).
API: http://livescore-api.com/documentation/reference

dlaczego nie używasz w php utf-8? - Miang 2018-07-26 08:51
Chyba nie rozumiem. Pobieraną nazwę drużyny nawet wpakowałem w utf8_encode($nazwa) ale w bazie nadal są krzaczki :/ - tracer93 2018-07-26 08:57
dlaczego masz w tych stringach inne kodowanie zamiast napisać całą stronę w utf-8 ? - Miang 2018-07-26 09:00
API nie jest moje, ja tylko pobieram z niego nazwy. Jeśli chodzi o to ISO-8859-2 w iconv() to mysle, ze w nim tez nie lezy problem bo pozywajac sie tej funkcji kodowanie nadal nie jest poprawne. Nazwy z API pobiera mi poprawnie(wypisuje je sobie dla testow), problem jest przy wrzucaniu tego do bazy... - tracer93 2018-07-26 09:06

Pozostało 580 znaków

2018-07-26 09:13
1

przetestuj czy poprawnie zapisze Ci string którego nie pobierasz z api

Dobry pomysł! Sprawdziłem i niestety wrzuca tego stringa z krzakami... - tracer93 2018-07-26 09:17
i już wiadomo że api nie ma nic do rzeczy ;) podaj jak zapisujesz string do bazy - Miang 2018-07-26 09:21

Pozostało 580 znaków

2018-07-26 09:23
0

@Miang: Jest to zapytanie, w którym podstawiam zmienne w odpowiednie pola:

            $id = $data->data->fixtures[$i]->id;
            $league_id = $data->data->fixtures[$i]->league_id;
            $team1 = utf8_encode($data->data->fixtures[$i]->home_name);
            $team2 = utf8_encode($data->data->fixtures[$i]->away_name);
            $date = $data->data->fixtures[$i]->date;
            $hour = $data->data->fixtures[$i]->time;

            $query = $conn->query("INSERT INTO `matches`(`id`,`id_competitions`,`team1`,`team2`,`date`,`hour`) VALUES(".$id.",".$league_id.",'".$team1."','".$team2 ."','".$date."','".$hour."'); ");       

To wina tego, że zamiast ` jest ' ? :O

a jaka baza danych - Miang 2018-07-26 09:38
Lokalna SQL na phpmyadmin - tracer93 2018-07-26 09:39

Pozostało 580 znaków

2018-07-26 09:42
1

http://php.net/manual/en/mysqli.set-charset.php ?

Kuuurcze no oczywiście... Już śmiga. Dziękuję bardzo! - tracer93 2018-07-26 09:47

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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