geokod google nie działa dla adresów ze znakami specjalnymi z bazy danych
Mam problem ze znakami specjalnymi dla adresów z mojej bazy danych dla geokodowania google, ale nie, jeśli je zakoduję na stałe.
Prosty kod geokodu
$url = "http://maps.googleapis.com/maps/api/geocode/json?address=". $address . "&sensor=true";
$jsonfile = file_get_contents($url);
$jsondata = json_decode($jsonfile);
$lat = $jsondata->results[0]->geometry->location->lat;
$lng = $jsondata->results[0]->geometry->location->lng;
Ten kod działa dla standardowych adresów, ale nie działa, gdy adres ma specjalny znak, jeśli pochodzi z mojej bazy danych.
Jeśli utrudnię kodowanie adresu jako:
$address = "10 Montée de Clausen, 1343 Luxemburg City, Luxembourg";
$address = str_replace(" ","+",$address);
Kod działa. Jeśli adres pochodzi z mojej bazy danych
$query="SELECT * FROM mytable";
$result=mysqli_query($GLOBALS["___mysqli_ston"], $query);
while($row=mysqli_fetch_assoc($result)){
$address = $row['address'];
$address = str_replace(" ","+",$address);
// geocode code.
}
To nie działa.
Baza danych znajduje się w utf8_unicode_ci. Jeśli powtórzę $ url zawierający adres, nawet jeśli pochodzi on z mojej bazy danych, a następnie umieściłem ten adres URL w przeglądarce, adres URL faktycznie wypluwa właściwe dane, ale użycie tego adresu URL w moim kodzie nie działa.
Próbowałem url zakodować adres przed str_replace, a także po str_replace i nadal nie działa.
Jak mogę go uruchomić?