之间有什么区别:
HttpUtility.UrlEncode("some string with é and β and stuff")
HttpUtility.UrlEncode("some string with é and β and stuff", Encoding.UTF8)
HttpUtility.UrlEncode( "some string with é and β and stuff", Encoding.Default )
结果是:
some+string+with+%c3%a9+and+%ce%b2+and+stuff
some+string+with+%c3%a9+and+%ce%b2+and+stuff
some+string+with+%e9+and+%df+and+stuff
测试时,我得到前两个相同的结果,所以我可以安全地假设UTF8是默认值,除非指定,或者在不同的系统上有所不同吗?
我看到了unicode转义序列的示例,如下所示:
%u00e9(é)
相当确定paypal会在他们的IPN请求中发送。为什么.NET不像这样编码?
答案 0 :(得分:7)
Reflector中方法HttpUtility.UrlEncode Method (String)
的源代码:
public static string UrlEncode(string str)
{
if (str == null)
{
return null;
}
return UrlEncode(str, Encoding.UTF8);
}
问题:
我可以安全地假设UTF8是默认值,除非指定
是的,你可以。
答案 1 :(得分:3)
是的,您可以放心地假设UTF8是基于上述示例的默认值。请记住,.NET的默认编码由操作系统的底层代码页决定。
您从PayPal看到的'%u00e9'示例实际上是non-standard implementation,用于编码Unicode字符。根据维基百科的说法,W3C拒绝了这一实施。