我知道%20和+都解码为相同的二进制值(空格),对于大多数Web服务器,尤其是那些映射到物理文件的Web服务器,它们将指向相同的资源.
但我的问题是,必须像网址http://www.example.org/hello%20world指向相同的资源http://www.example.org/hello+world,是他们规范地一样的吗?
在HTTP/1.0 +中没有映射到空格,所以我特别询问HTTP/1.1.
Uri uri = new Uri(redirectionUrl);
NameValueCollection col = HttpUtility.ParseQueryString(uri.Query)
Run Code Online (Sandbox Code Playgroud)
uri.Query已被解码 - 所以我有什么方法可以阻止ParseQueryString它再次解码?
除此之外 - 是否有另一种方法从Uri检索名称值集合而不修改任何组件?
我是url编码一串文本传递给一个函数.但是,它将双空格中的第二个空格编码为"%A0".这意味着当我解码字符串时,"%A0"在黑框中显示为问号.
我真的只需要能够删除额外的空间,但我想了解是什么导致了这个以及如何正确处理它.
例如:
Something Something else
Run Code Online (Sandbox Code Playgroud)
编码为:
Something+%A0Something+else
Run Code Online (Sandbox Code Playgroud) URLEncode转换字符如下:
- Spaces()转换为加号(+).
- 非字母数字字符转义为十六进制表示.
这与W3C类似,但不完全相同
应用程序/ x-WWW窗体-urlencoded
这是默认的内容类型.使用此内容类型提交的表单必须按如下方式编码:
控制名称和值将被转义.空格字符由'+'替换,然后保留字符按RFC1738第2.2节中的描述进行转义:非字母数字字符由'%HH'替换,百分号和两个十六进制数字表示字符的ASCII代码.换行符表示为"CR LF"对(即'%0D%0A').
控件名称/值按它们在文档中出现的顺序列出.名称通过'='与值分隔,名称/值对通过'&'彼此分隔.
我的问题是,是否有人完成了确定URLEncode是否生成有效的x-www-form-urlencoded数据的工作?
我想url编码python字符串并获得希伯来字符串的异常.我无法解决它并开始做一些猜测导向的编程.最后,mystr = mystr.encode("utf8")在将其发送到url编码器之前执行保存当天.
有人可以解释发生了什么吗?.encode("utf8")有什么作用?我的原始字符串无论如何都是unicode字符串(即以au为前缀).
我有这样的网址
http://www.example.com/Data/image/office-dôn-sì-à.jpg
Run Code Online (Sandbox Code Playgroud)
我想使用php中的复制功能将该文件复制到我的服务器.所以首先要对它进行编码(我认为浏览器会做同样的事情)
http://www.example.com/Data/image/office-d%C3%B4n-s%C3%AC-%C3%A0.jpg
Run Code Online (Sandbox Code Playgroud)
但是如果我使用函数urlencode,则会将完整的url编码为
http%3A%2F%2Fwww.example.com%2FData%2Fimage%2Foffice-d%C3%B4n-s%C3%AC-%C3%A0.jpg
Run Code Online (Sandbox Code Playgroud)
这不再是一个URL而不是我想要的.
有帮助吗?
我在这里认真对待大脑放屁,但我无法弄清楚为什么这不符合我的生活.一直在搜索,我甚至无法获取代码样本进行编码.有任何想法吗?
NSString *searchString = @"waffl&es";
NSString *encodedSearchString = [searchString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *urlString = [NSString stringWithFormat:@"http://en.wikipedia.org/?search=%@", encodedSearchString];
NSURL *url = [NSURL URLWithString:urlString];
Run Code Online (Sandbox Code Playgroud) 我需要传递#,!等特殊字符 在Facebook,Twitter和此类社交网站的URL中等.为此,我用URL Escape Codes替换这些字符.
return valToEncode.Replace("!", "%21").Replace("#", "%23")
.Replace("$", "%24").Replace("&", "%26")
.Replace("'", "%27").Replace("(", "%28")
.Replace(")", "%29").Replace("*", "%2A");
Run Code Online (Sandbox Code Playgroud)
它适用于我,但我想更有效地做它.有没有其他方法来逃避这些角色?我尝试使用Server.URLEncode(),但Facebook没有呈现它.
先谢谢,
Priya
我移植一个项目的目标net472来netstandard.System.Web我坚持的最后一个依赖是HttpServerUtility.UrlTokenEncode(Byte[]).
我发现Microsoft.AspNetCore.WebUtilities,包含Base64UrlTextEncoder和WebEncoders,但是它们与UrlTokenEncode/ 不可互换Decode,因为它追加/期望最后的=填充字符数,例如:
var data = Encoding.UTF8.GetBytes("SO");
Convert.ToBase64String(data); // U08=
HttpServerUtility.UrlTokenEncode(data); // U081 - this is what's expected and
// the only thing UrlTokenDecode can handle
Base64UrlTextEncoder.Encode(data); // U08
WebEncoders.Base64UrlEncode(data); // U08
Run Code Online (Sandbox Code Playgroud)
据我所知,没有其他差异(我用随机字符串运行测试),但它也引入了一些其他依赖项(Microsoft.Net.Http.Headers和Microsoft.Extensions.Primitives),我不知道真的需要在那个项目中.
是否有任何nuget包装与直接替换?我想自己实现这个,如果没有.