C# Winform中 如何进行UrlEncode编码及解码

Asp.net开发中可使用Server.HTMLEncode、Server.URLEncode 将文本或URL的特殊字符进行编码,而在控制台或Winform程序开发中,却没法使用到这些方法。


解决办法,如下:

右击项目-->添加引用-->.NET-->System.Web-->确定。

但在.net4.0的框架中,是没法找到System.Web的,可用如下方法解决:

右击项目-->添加引用,请切换到浏览标签,在 C:\Windows\Microsoft.NET\Framework\v2.0.50727 目录下找到,其中 v2.0.50727 是你实际使用的 .NET 版本。(一定要是这个,4.0目录下的无效)

WinForm 使用 HttpUtility 无 System.Web.dll?


System.Web.HttpUtility.HtmlEncode(str);

System.Web.HttpUtility.HtmlDecode(str);
System.Web.HttpUtility.UrlEncode(str); 
System.Web.HttpUtility.UrlDecode(str);

编码后得到的字串和用Server.URLEncode编码得到的不一样,那边接收到的也是乱码?? 


编码时可以指定编码的,如 
System.Web.HttpUtility.UrlEncode(str,System.Text.Encoding.Unicode); 
System.Web.HttpUtility.UrlEncode(str,System.Text.Encoding.UTF8); 
System.Web.HttpUtility.UrlEncode(str,System.Text.Encoding.GetEncoding( "GB2312 ")); 

解码也可以指定编码的 
System.Web.HttpUtility.UrlDecode(str,System.Text.Encoding.Unicode); 
System.Web.HttpUtility.UrlDecode(str,System.Text.Encoding.UTF8); 

System.Web.HttpUtility.UrlDecode(str,System.Text.Encoding.GetEncoding( "GB2312 "));


    但在C#里,HttpUtility.UrlEncode()转换出来的编码,到了客户端用JS的decode方法转换后,发现总有个"+"号,原来字符串是没有“+”号的。

     经分析后,发现问题原因在于,微软的HttpUtility.UrlEncode方法把【空格】转成"+"了( 如果原来是 "+" 则被转换成 "%2b" ) ,为了符合JS编码格式,把"+"替换成 "%20"(%20为空格的urlencode编码即可。

如:

服务端: 
    message= HttpUtility.UrlEncode(message,System.Text.Encoding.UTF8).Replace("+", "%20");

客户端:

    decodeURIComponent(message);

 PS:后来用JAVA也测试一下,发现JAVA的urlEncode方法没这个问题,java直接就把【空格】转成"%20"了 。


url参数中有+、空格、=、%、&、#等特殊符号的问题解决

=======================================================================
url出现了有 “ +, 空格, /, ?, %, #, &, = ”  等8个特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好?
解决办法:  URLencode字符转义

将这些字符转化成服务器可以识别的字符,对应关系如下:

+                   URL 中+号表示空格                     %2B   
空格      URL中的空格可以用+号或者编码           %20 
/                 分隔目录和子目录                           %2F     
?       分隔实际的URL和参数                   %3F     
%    指定特殊字符                                          %25     
#    表示书签                                                  %23     
&    URL 中指定的参数间的分隔符                  %26     
=    URL 中指定参数的值                                %3D





猜你喜欢

转载自blog.csdn.net/u010820135/article/details/78878873