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ć?

questionAnswers(2)

yourAnswerToTheQuestion