要把数据组合成为一个URL,然后去访问一个网站。想把URL里的参数转换成为安全的格式,以免以后有稀奇古怪的事情发生。
如果在Web程序里,可以使用HttpUtility.UrlEncode。如果在桌面程序里,HttpUtility.UrlEncode的调用不是很方便,要在reference里加入一个System.Web才能正常使用。但是我的程序是升级版,这样做怕对程序发布有影响,所以要找另外的方法实现。
System.Uri提供了一个解决的方案。在桌面程序里,可以使用System.Uri里EscapeDataString实现。Uri的EscapeDataString函数是一对的。除了有EscapeDataString外,还有UnescapeDataString。
以下是一个例子:
//转换。
string ss = System.Uri.EscapeDataString("$%^&*(中文)!@#$%$#Test");
//转回来
string sss = System.Uri.UnescapeDataString(ss);
//显示转换后的字串
MessageBox.Show(ss);
//显示转回来的字串
MessageBox.Show(sss);
这个例子在VS2010和Windows 7 Pro下通过。英文和中文的转换没问题。如果中文的转换不行,有可能是跟系统设置有关。可以在控制面板里把系统的语言相关的地方设置一下。