【问题标题】:get utf-8 geocode google map API Street address in asp在 asp 中获取 utf-8 地理编码谷歌地图 API 街道地址
【发布时间】:2015-12-27 08:58:53
【问题描述】:

我是 asp.net (c#) 的初学者 但我需要从纬度和经度位置获取 utf-8 地址 所以我需要以 fa 语言检索地址,并且我已将 language=fa 添加到 String 映射地址。 但它检索到了奇怪的字符 这是我的代码:

public static void RetrieveFormatedAddress(string lat1, string lng1)
{
    static string baseUri = "http://maps.googleapis.com/maps/api/geocode/xml?latlng={0},{1}&language=fa&sensor=true";
    string requestUri = string.Format(baseUri, lat1, lng1);

    using (WebClient wc = new WebClient())
    {
        wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
        wc.DownloadStringAsync(new Uri(requestUri));
    }
}

static void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    var xmlElm = XElement.Parse(e.Result);
    var status = (from elm in xmlElm.Descendants()
                  where elm.Name == "status"
                  select elm).FirstOrDefault();
    if (status.Value.ToLower() == "ok")
    {
        var res = (from elm in xmlElm.Descendants()
                   where elm.Name == "formatted_address"
                   select elm).FirstOrDefault();
        Console.WriteLine(res.Value);
        Console.WriteLine(res);
        GetSMS getsms1 = new GetSMS();
        getsms1.retrunAdress(res.Value);
    }
    else
    {
        Console.WriteLine("error");
    }
}

谷歌还给了我:

    طھظ‡ط±ط§ظ†طŒ طھظ‡ط±ط§ظ†طŒ ط®غŒط§ط¨ط§ظ† ط§ظ…غŒط±غŒ ط·ط§ط¦ظ…ظ‡طŒ ط§غŒط±ط§ظ†

如何从谷歌获取“波斯语”语言地址? 谢谢

【问题讨论】:

  • 哪个(即哪个变量)正是您作为结果引用的字符串?您是否在浏览器中查看了请求的结果,看它是否与字符串的内容有任何相似之处?您要求使用波斯语 (language=fa) - 这是您的意图吗?结果似乎包含一些类似波斯语的字符,因此不一定完全错误。尝试看看如果你使用英语会发生什么,然后在必要时切换回波斯语。
  • @RemigiusStalder 首先,感谢您的评论。是的,我需要波斯语街头语言。当我使用 language=en 时,我收到了如下所示的英语街道地址:“德黑兰,德黑兰,阿米里泰梅街,伊朗”
  • 请回答我所有的问题...
  • 你的意思是什么? (你的意思是我的浏览器)?并在浏览器中使用字符串请求,结果是正确的fa语言。
  • 浏览器中的结果显示了谷歌返回的内容。我无法验证任何内容,因为您没有提供测试用例的坐标。哪个变量包含您引用的结果?它是否对应于返回的 XML 的预期部分?如果是这种情况(并且您的代码在英文中也可以正常工作),您只能向 Google 提供错误报告(不要问我如何让 Google 解决此问题)。否则,您应该以不同的方式查询返回的 XML,以准确获取您需要的部分。

标签: c# google-maps-api-3 google-geocoder


【解决方案1】:

在网上搜索了 2 天并测试了很多不同的代码后,我终于找到了解决方案。我的代码是正确的,但只需要在 Web 客户端对象上设置 UTF-8 Unicode。所以我的代码会变成这样:

  using (WebClient wc = new WebClient())
    {
       wc.Encoding = Encoding.UTF8;
       wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
       wc.DownloadStringAsync(new Uri(requestUri));
    }

这也适用于 UTF-8。

【讨论】:

    猜你喜欢
    • 2013-12-20
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    相关资源
    最近更新 更多