首页 新闻 会员 周边

关于URL以不同编码格式 编码解码的代码

0
悬赏园豆:10 [待解决问题]

新浪天气API:http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0
我用C#的Uri类编码北京,结果是:%E5%8C%97%E4%BA%AC
问题是新浪的是 %B1%B1%BE%A9。 纠结了,新浪的是怎么弄的?

 

我用 百度搜索的 编码 应用 才明白:

新浪使用GB2312把北京编码成:%B1%B1%BE%A9

而C#是把北京编码成:%E5%8C%97%E4%BA%AC

 

这是全部代码: getGB2312就是获取编码的

 

WebClient.Encoding = System.Text.Encoding.UTF8;
                string uri = "http://php.weather.sina.com.cn/xml.php?city=" + getGB2312(key) + "&password=DJOYnieT8234jlsK&day=0";
                string val = WebClient.DownloadString(uri);
                string text = "北京今天," + GetString(val, "<status1>", "</status1>") + ","
                     + GetString(val, "<direction1>", "</direction1>") + ",温度在" + GetString(val, "<temperature1>", "</temperature1>")
                      + "°到" + GetString(val, "<temperature2>", "</temperature2>") + "°之间.";

问题补充:

抱歉,忘记问题了,我的问题就是,,string getGB2312(string key)方法该如何实现

 

抱歉,少了个方法:

 

      public string GetString(string a, string b, string c)
        {
            int start = a.IndexOf(b) + b.Length;
            int end = a.IndexOf(c, start);
            return a.Substring(start, end - start);
        }

蓝多的主页 蓝多 | 菜鸟二级 | 园豆:340
提问于:2014-03-12 17:28
< >
分享
所有回答(1)
0

C#是用的UTF8吧? 你改成gb2312试试

丫的 | 园豆:1575 (小虾三级) | 2014-03-12 17:33

抱歉,忘记问题了,我的问题就是,,string getGB2312(string key)方法该如何实现

支持(0) 反对(0) 蓝多 | 园豆:340 (菜鸟二级) | 2014-03-13 13:25

 System.Text.Encoding.GetEncoding("gb2312")

支持(0) 反对(0) 丫的 | 园豆:1575 (小虾三级) | 2014-03-13 13:26

@tomcat1988:  完整的,并且你复制楼主的代码,经过测试的。有效地。

支持(0) 反对(0) 蓝多 | 园豆:340 (菜鸟二级) | 2014-03-13 13:31

@蓝多: 你也太懒了吧  !!System.Web.HttpUtility.UrlEncode("北京", System.Text.Encoding.GetEncoding("gb2312"))

支持(0) 反对(0) 丫的 | 园豆:1575 (小虾三级) | 2014-03-13 13:37

@tomcat1988:  - -,这么简单啊。 原来编码的方法就可以设定指定的编码格式。 我一直都是先转成 GB2312的文本再URI编码。 每次都是失败。

支持(0) 反对(0) 蓝多 | 园豆:340 (菜鸟二级) | 2014-03-13 13:46

@蓝多: 呵呵 你平时多注意下重载的方法

有时就是这么简单

支持(0) 反对(0) 丫的 | 园豆:1575 (小虾三级) | 2014-03-13 13:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册