专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

C#有关URL中特殊字符的处理方法

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:12:01       共计:3675 浏览

一、问题 URL 传递时 客户端发送的和服务端接收到的不一致


经分析是因为URL 中含有特殊字符"#$ ^ & * + =",这些字符在URL 中被转义啦!!!


常见的URL 中的特殊字符、表示的意义以及十六进制的表示


字符       意义                                                   十六进制

+          URL 中+号表示空格                                  %2B

空格       URL中的空格可以用+号或者编码                %20

/         URL 中分隔目录和子目录                             %2F

?          URL 中分隔实际的 URL 和参数                    %3F

%          URL 中指定特殊字符                                %25

#          URL 中表示书签                                       %23

&          URL 中指定的参数间的分隔符                     %26

=          URL 中指定参数的值                                 %3D


 

二、常见解决方法


在 c#中有三种常用的编码方式,可以有效的解决URL传输中特殊字符的问题


1  HttpUtility.UrlEncode      


2  Server.UrlEncode


3  Uri.EscapeUriString



我们以第一个方法为例:


//需要现在工程中引用System·web

var tmpURL = @"C:\Users\hu\Desktop\数据\tiemtest\000000#$^&*+=";

   var originalUrl = System.Web.HttpUtility.UrlEncode(tmpURL );

   var serverUrl = System.Web.HttpUtility.UrlDecode(originalUrl);

   //这一步我们发现serverUrl 和tmpURL 是一致的,这样就达到了我们想要的效果


 


今天介绍另外一种,在URL 中传递文件路径时发现上述问题,于是采用了上述三种方法之外的方法:

三、所用方法


客户端传递URL:


//先转成UTF8编码

var filePathByte = Encoding.UTF8.GetBytes(filePath);

//再转为Base64

subFilePath = Convert.ToBase64String(filePathByte);

   RestProxy.RestPostAsync<bool, Stream>(GetFileMethodUrl("Method", subFilePath), fileContent, callBack, config);


 


服务端接收处理:

服务端转换过程和客户端的转换过程相反,服务对接收到的URL要先进行URL base 64 转换 再进行UTF8 转换


//base64 转换

subFilePath = Convert.FromBase64String(subFilePath));

//UTF8 转换

subFilePath = subFilePath = Encoding.UTF8.GetString(subFilePath );

//针对"\\"进行特殊处理

while (subFilePath.StartsWith("\\"))

   {

       subFilePath = subFilePath.Remove(0, 1);

   }


 

上述方法可以解决文件路径当URL的一部分来传递时遇到异常的情况


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:c# 获取所有的进程的cpu使用率_如何找出让CPU使用率达到100%的应用 | ·下一条:使全站变灰色代码

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有