URL unicode参数解码c#
本文关键字:解码 参数 unicode URL | 更新日期: 2023-09-27 18:07:08
我得到了一个包含参数的URL,其中一个是西里尔字母。
http://localhost/Print.aspx?id=4& subwebid = 243572, docnumber = % u0417%u041f005637-1& deliverypoint = 4630013519990
Doc-number必须为ЗП005637-1。我已经尝试了下面的代码,但是字符串仍然是那些字符%u0417%u041f。
public static String DecodeUrlString(this String url)
{
String newUrl;
while ((newUrl = Uri.UnescapeDataString(url)) != url)
url = newUrl;
return newUrl;
}
不能使用HttpUtility
如果您的目标是避免对System.Web.dll
的依赖,那么您通常会使用webtility类中的等效方法:webtility。UrlDecode方法。
然而,你会发现,即使这样,你的url也不会按照你想要的方式被解码。
这是因为WebUtility.UrlDecode
故意不处理%uNNNN
转义符号。请注意源代码中的注释:
// *** Source: alm/tfs_core/Framework/Common/UriUtility/HttpUtility.cs
// This specific code was copied from above ASP.NET codebase.
// Changes done - Removed the logic to handle %Uxxxx as it is not standards compliant.
如评论中所述,%uNNNN
转义格式不符合标准,应尽可能避免使用。你可以在这个线程中找到更多关于这个和正确编码url的方法的信息。
如果您可以控制url的生成方式,请考虑将其更改为符合标准的。否则,考虑将System.Web.dll
添加为依赖项,找到另一个第三方库来完成这项工作,或者编写自己的解码器。如前所述,源代码在那里。