геокод google не работает для адресов со специальными символами из базы данных

У меня возникла проблема со специальными символами для адресов из моей базы данных для геокода google, но не для их жесткого кодирования.

Простой код геокода

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

Этот код работает для стандартных адресов, но не работает, когда адрес имеет специальный символ, если он исходит из моей базы данных.

Если я жестко задаю адрес как:

 $address = "10 Montée de Clausen, 1343 Luxemburg City, Luxembourg"; $address = str_replace(" ","+",$address); 

Код работает. Если адрес поступает из моей базы данных

 $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. } в $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. } 

Это не работает.

База данных находится в utf8_unicode_ci. Если я повторю $ url, включая адрес, даже если он пришел из моей базы данных, а затем поместил этот url в браузер, url фактически выплевывает нужные данные, но использование этого url в моем коде не работает.

Я пытался URL кодировать адрес перед str_replace, а также после str_replace, и он все еще не работает.

Как мне заставить его работать?

Related of "геокод google не работает для адресов со специальными символами из базы данных"

Что делать, если вы делаете следующее:

 $query="SELECT * FROM mytable"; $result=mysqli_query($GLOBALS["___mysqli_ston"], $query); while($row=mysqli_fetch_assoc($result)){ $address = urlencode(mb_convert_encoding($row['address'], 'UTF-8')); // geocode code... } в $query="SELECT * FROM mytable"; $result=mysqli_query($GLOBALS["___mysqli_ston"], $query); while($row=mysqli_fetch_assoc($result)){ $address = urlencode(mb_convert_encoding($row['address'], 'UTF-8')); // geocode code... } 

Попробуйте использовать urlencode для вывода данных базы данных

подобно

  $address = urlencode($row['address']) 

Также удалите этот $address = str_replace(" ","+",$address); из текущего кода.