Muh*_*eed 28 urlencode windows-phone-7 portable-class-library microsoft-metro
我知道在可移植类库中很好地支持Web请求.在PCL中是否有任何HttpUtility.UrlEncode等效?我需要它用于Windows Phone和Metro应用程序.
Jon*_*Jon 36
使用Uri.EscapeUriString
和Uri.EscapeDataString
两者之间的唯一区别是,EscapeDataString
它还编码包含这些字符的RFC 2396保留字符;/?:@&=+$
,
重要的是要注意,这些方法都不编码包含RFC 2396的非保留字符.-_.!~*'()
因此,如果您需要这些编码,则必须手动编码它们.
pat*_*dge 15
在便携式类库中幸运地以.NET 4.5为目标(例如Profile7),许多HttpUtility方法都有兄弟姐妹System.Net.WebUtility
.
using System.Net;
WebUtility.UrlEncode("some?string#");
Run Code Online (Sandbox Code Playgroud)
虽然一些兄弟方法看起来与它们的HttpUtility对应物相同,但是这个方法在得到的编码之间略有不同.WebUtility.UrlEncode
生成大写编码,同时HttpUtility.UrlEncode
生成小写编码.
WebUtility.UrlEncode("?") // -> "%3F"
HttpUtility.UrlEncode("?") // -> "%3f"
Run Code Online (Sandbox Code Playgroud)
如果您依赖于PCL代码生成您之前使用HttpUtility代码生成的内容,则可以围绕此方法创建自己的辅助方法并对其进行正则表达式.
using System.Text.RegularExpressions;
public static string UrlEncodeOldSchool(string value) {
var encodedValue = WebUtility.UrlEncode(value);
return Regex.Replace(encodedValue, "(%[0-9A-F]{2})",
encodedChar => encodedChar.Value.ToLowerInvariant());
}
Run Code Online (Sandbox Code Playgroud)
(即使这是一个简单的,总是正则表达式,风险自负.)
归档时间: |
|
查看次数: |
5172 次 |
最近记录: |