我想打印我如何能从"A“城市到"B”城市。我使用PHP和Google。我已经可以这样做了,但是当打印结果时,字符编码是不正确的。
如果我将GET参数设置为:origin=Cegléd,那么Google将无法工作,但是如果我像这样设置它:origin=Cegled,那么Google就能工作了。我设置了utf-8字符编码,所以我不明白为什么它不能工作。
<?php
header ('Content-Type: application/json; charset=utf8');
$a="---";
$origin=$_GET['origin'];
$destination=$_GET['destination'];
$url = "http://maps.googleapis.com/maps/api/directions/json?origin=";
$url = $url . $origin;
$url = $url . "&destination=";
$url = $url . $destination;
$url= $url . "&language=hu-HU&ie=utf8";
echo $url;
echo $a;
$json = file_get_contents($url);
$data = json_decode(utf8_encode($json),true);
echo $data['routes'][0]['legs'][0]['distance']['text'];
echo $a;
echo $data['routes'][0]['legs'][0]['distance']['value'];
echo $a;
echo '
';
$inc=1;
for($i=0;$i<count($data['routes'][0]['legs'][0]['steps']);$i++){
$subject = $data['routes'][0]['legs'][0]['steps'][$i]['html_instructions'];
$search1 = '<b>';
$search2 = '</b>';
$trimmed = str_replace($search1, '', $subject);
$result = str_replace($search2, '', $trimmed);
echo $inc .". lépés:" . $result;
echo '
----';
echo $a;
$inc++;
}
?>这段代码没有显示正确的字符。我不知道为什么。
这个例子显示器:
�p�s:Haladjon tov圣保罗圣保罗--圣保罗-2l�p�s:Forduljon jobbra 1. keresztutc圣保罗-3l�p�s:Folytassa az utat erre: Mars t c r-4。l�p�s:Folytassa az utat erre: P.-5l�p�s:Folytassa az utat erre: Berlini krt./43。T-6l�p�s:Forduljon balra,k--圣保罗:
发布于 2015-04-21 19:13:51
来自Google的JSON响应可能已经用UTF-8编码了。您应该跳过utf8_encode()调用:
$data = json_decode(utf8_encode($json),true);对UTF-8数据进行两次编码通常会产生额外的Â、Ã和其他类似字符.
https://stackoverflow.com/questions/29772350
复制相似问题