瀏覽器直接訪問高德 Geocoding API 返回完整 JSON(含 `geocodes` 數組),但 PHP cURL 獲取返回 `count:0, geocodes:[]`。
$requesturl = "https://restapi.amap.com/v3/geocode/geo?address=北京市朝陽區阜通東大街6號&output=json&key=...";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $requesturl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$info = curl_exec($ch);
curl_close($ch);
echo json_decode($info, true);
PHP 源文件編碼為 GBK/GB2312,而 URL 中的中文參數 `address=北京市...` 以文件編碼形式嵌入。高德 API 要求 UTF-8 編碼的 URL 參數。GBK 編碼的中文在 URL 中會被誤解析,導致地址解析失敗,返回空結果。
$address = urlencode("北京市朝陽區阜通東大街6號"); // 確保字符串為 UTF-8
$requesturl = "https://restapi.amap.com/v3/geocode/geo?address=$address&output=json&key=...";
在代碼中 `var_dump($requesturl);` 檢查實際請求 URL 中文部分是否為 `%E5%8C%97%E4%BA%AC...`(UTF-8 URL 編碼)而非 `%B1%B1%BE%A9...`(GBK 編碼)。
中文參數 API 請求務必保證:源文件 UTF-8、字符串 UTF-8、URL 編碼 UTF-8。編碼不一致是「瀏覽器正常、代碼異常」的最常見原因。