无法将希伯来语编码为 url 用于 google 地图查询

having trouble to encode hebrew into url for google maps query

我有一些 R 代码,它采用我提供给它的城市名称,然后将其输入到 Google 地图可以理解的 URL 查询类型中,然后它给了我纬度和经度坐标。我的城市名都是希伯来语!

当我在 this 站点中使用“url 编码”,然后将输出放入我的代码时,一切正常。但后来我心想 - 为什么我需要使用这个网站,因为我可以在相同的代码中用 R 对其进行编码。

所以我试过了,很明显 - URLencode 我在互联网上找到的所有软件包都对它进行编码 与我提到的网站不同。例如: 我想对希伯来城市名称进行编码:צפת

如何获取网站使用的第一个编码? (我试过用RCurlurltools,都没有用..)

R代码是这样的(我在this网站上找到的):

getGeoCode <- function(gcStr)
{
  library("RJSONIO") # Load Library
  gcStr <- gsub(' ','%20',gcStr) # Encode URL Parameters
  # Open Connection
  connectStr <- paste('http://maps.google.com/maps/api/geocode/json?sensor=false&address=',gcStr, sep="") 
  con <- url(connectStr)
  data.json <- fromJSON(paste(readLines(con), collapse=""))
  close(con)
  # Flatten the received JSON
  data.json <- unlist(data.json)
  lat <- data.json["results.geometry.location.lat"]
  lng <- data.json["results.geometry.location.lng"]
  gcodes <- c(lat, lng)
  names(gcodes) <- c("Lat", "Lng")
  return (gcodes)
}

我没有看到你用 URLencode() 描述的问题:

location <- "צפת"
URLencode(location)
# [1] "%D7%A6%D7%A4%D7%AA"

并使用我的 googleway 将查询打包到 Google 有效

library(googleway)

apiKey <- ""

res <- google_geocode(address = location, key = apiKey)

res$results$formatted_address
# [1] "Safed, Israel"

res$results$address_components
# [[1]]
# long_name     short_name                                  types
# 1          Safed          Safed                    locality, political
# 2          Tzfat          Tzfat administrative_area_level_2, political
# 3 North District North District administrative_area_level_1, political
# 4         Israel             IL                     country, political

res$results$geometry$location
#        lat    lng
# 1 32.96465 35.496

因此,我设法找到了问题的答案 - 我不得不将语言环境更改为 "English",因为它位于 "Hebrew"。 Sys.setlocale("LC_ALL","English")