积极答复者
WebClient DownloadData的参数Uri含有中文时,出现乱码问题

问题
-
public static string HttpPost(Uri uri) { WebClient http = new WebClient(); try { byte[] data = http.DownloadData(uri); string result = Encoding.Default.GetString(data); if (result.StartsWith("Error")) { return ""; } return result.Trim(); } catch (WebException we) { log.Error("HttpPost => " + we.Message + ":" + uri.ToString()); return "WebException"; } catch (Exception e) { log.Error("HttpPost => " + e.Message + ":" + uri.ToString()); return ""; } finally { if (http != null) http.Dispose(); } }
如上代码,当uri中含有中文时,如:http://191.168.11.205:7001/ds/serviceAction.do?spe_config_file=/module/xml/db/manager/InsertDutyEvalua.xml&eva_content=测试&eva_level=2
这个“测试”在远程被JAVA的ibatis框架处理插入oracle数据库后,显示为乱码:娴嬭瘯;如果直接将url通过IE请求,结果正常,请问怎么处理?
答案
-
Post请求? 不是Get对吧。
首先,这个编码的字符串只是一个地址,我们需要去request的,而且是可行的,你只需要把地址中的中文进行转换后然后生成Uri去request。
但是你又提到了Post请求,这个请求不在地址中放置参数,而是需要把请求封装到我们的HttpWebRequst中。简单使用,参考 http://msdn.microsoft.com/en-us/library/debx8sh9.aspx 中文博客中我也找到一个比较直观的:http://www.cnblogs.com/ThomasNet/archive/2007/09/03/879331.html
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 猪宝贝 2012年7月10日 1:29
全部回复
-
虽然是Metro的帖子,但是你看下,是一样的问题: http://social.msdn.microsoft.com/Forums/zh-CN/metroappzhcn/thread/88cd3bef-94cb-4842-8063-c7678e7f18f4/
string message=" http://www.bing.com/search?q=中文 ";
String after = Uri.EscapeDataString(message);
string before=Uri.UnescapeDataString(after);
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
-
Post请求? 不是Get对吧。
首先,这个编码的字符串只是一个地址,我们需要去request的,而且是可行的,你只需要把地址中的中文进行转换后然后生成Uri去request。
但是你又提到了Post请求,这个请求不在地址中放置参数,而是需要把请求封装到我们的HttpWebRequst中。简单使用,参考 http://msdn.microsoft.com/en-us/library/debx8sh9.aspx 中文博客中我也找到一个比较直观的:http://www.cnblogs.com/ThomasNet/archive/2007/09/03/879331.html
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 猪宝贝 2012年7月10日 1:29
-
Post请求? 不是Get对吧。
首先,这个编码的字符串只是一个地址,我们需要去request的,而且是可行的,你只需要把地址中的中文进行转换后然后生成Uri去request。
但是你又提到了Post请求,这个请求不在地址中放置参数,而是需要把请求封装到我们的HttpWebRequst中。简单使用,参考 http://msdn.microsoft.com/en-us/library/debx8sh9.aspx 中文博客中我也找到一个比较直观的:http://www.cnblogs.com/ThomasNet/archive/2007/09/03/879331.html
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
感谢,昨天没有想到把参数单独放到requestStream里,编码都改为gb2312后,解决了,感谢!!!!