none
Uri编码问题,请版主给解决下,不胜感激 RRS feed

  • 问题

  • 代码:
    string url="http://www.baidu.com/s?tn=henxin_pg&ie=gb2312&bs=%e4%af%c0%c0%c6%f7&sr=&z=&cl=3&f=8&wd=%ca%d6%bb%fa%e4%af%c0%c0%c6%f7&ct=0";
    Uri uri =new Uri(url);
    此uri将会变成乱码,求解决方案.
    最好是不必将url解码,因为不想让URL显示几个中文字而是保持原有的URL.
    2009年9月16日 8:16

答案

全部回复

  • 你要的是什么意思啊?QueryString编码是必须的,是一种标准规范。你要实现什么结果?


    【孟子E章】
    2009年9月16日 8:33
    版主
  • 谢谢版主回复,
    是这样的,一旦Uri uri =new Uri(url);,这uri里就是乱码而不是http://www.baidu.com/s?tn=henxin_pg&ie=gb2312&bs=%e4%af%c0%c0%c6%f7&sr=&z=&cl=3&f=8&wd=%ca%d6%bb%fa%e4%af%c0%c0%c6%f7&ct=0而是http://www.baidu.com/s?tn=henxin_pg&ie=gb2312&bs=ä¯ÀÀÆ÷&sr=&z=&cl=3&f=8&wd=%CAֻ&ct=0,怎么办啊,版 主

    查MSDN,URI构造函数会压缩序列,如果因为这样,怎么解决呢?
    2009年9月16日 9:24
  • 您好,可以通过uri.OriginalString来获取原地址。
    • 已标记为答案 Danny.Li 2009年9月18日 8:00
    2009年9月16日 10:06
  • 谢谢Jiyuan,需要直接用URI,因为很多.NET框加的类需要URI的参数比如,Webbrowser.Navigate(uri);
    这里用string作数Webbrowser还是会实例一个Uri,
    最终URL还是会变成乱码
    2009年9月17日 0:58
  • 好像没有特别的方法,一般情况下,在需要 uri的地方都可以直接使用重载方法string类型的url的,无需进行 Uri对象 ,如 Navigate(String)


     

    【孟子E章】
    2009年9月17日 2:28
    版主
  • 是啊,我也尝试了常用的编码和解码的方法都不成功。
    剩下的方法就是要跟踪到.net的源码中调试了(或下载源代码码),看看具体的算法是什么再找出解决方案,lz可以尝试一下。
    2009年9月17日 3:47
  • 好像没有特别的方法,一般情况下,在需要 uri的地方都可以直接使用重载方法string类型的url的,无需进行 Uri对象 ,如 Navigate(String)


     

    【孟子E章】
    谢谢版主
    Navigate(string)会默认调用navigate(Uri)这个构造,还是会执行实例化一个Uri,所以最后还是会变乱码


    2009年9月17日 3:49
  • 是啊,我也尝试了常用的编码和解码的方法都不成功。
    剩下的方法就是要跟踪到.net的源码中调试了(或下载源代码码),看看具体的算法是什么再找出解决方案,lz可以尝试一下。

    谢谢Jiyuan.
    呵呵,关系到.NET的源码就太复杂了,本来只是一处小地方,目前所有我的项目中自己实例化URI的地方全用STRING代替了,系统返回或生成的URI全部按照uri.OriginalString来处理了,
    使用Navigate(uri)后的Webbrowser的uri时,也用uri.OriginalString代替了,
    总之,项目中所有自己创建URI的地方用STRING代替了,系统使用的URI使部用uri.OriginalString代替了
    暂时这样了,希望朋友们和版主给一个更好的解决方法,再次感谢版主和Jiyuan
    • 已建议为答案 YiChun Chen 2009年9月17日 9:03
    • 取消建议作为答案 YiChun Chen 2009年9月17日 9:03
    2009年9月17日 3:54
  • 是啊,我也尝试了常用的编码和解码的方法都不成功。
    剩下的方法就是要跟踪到.net的源码中调试了(或下载源代码码),看看具体的算法是什么再找出解决方案,lz可以尝试一下。

    谢谢Jiyuan.
    呵呵,关系到.NET的源码就太复杂了,本来只是一处小地方,目前所有我的项目中自己实例化URI的地方全用STRING代替了,系统返回或生成的URI全部按照uri.OriginalString来处理了,
    使用Navigate(uri)后的Webbrowser的uri时,也用uri.OriginalString代替了,
    总之,项目中所有自己创建URI的地方用STRING代替了,系统使用的URI使部用uri.OriginalString代替了
    暂时这样了,希望朋友们和版主给一个更好的解决方法,再次感谢版主和Jiyuan

    哈,不客气啊,有机会我也想研究一下。有结果了大家来分享。

    2009年9月17日 4:15