C#中URL Unicode参数解码

3

1
因此,请使用代码 from HttpUtility; http://referencesource.microsoft.com/#System.Web/Util/HttpEncoder.cs,afac0d4e31f5382a - Alex K.
1个回答

1
如果您的目标是避免依赖于System.Web.dll,那么您通常会使用WebUtility Class中等效的方法:WebUtility.UrlDecode Method。但是,即使这样,您会发现您的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 添加为依赖项,查找另一个第三方库来完成工作,或者编写自己的解码器。正如已经评论的那样,源代码 已经公开。


1
+1 最后一段。 %uNNNN 通常是客户端使用了已过时的 JavaScript escape() 函数的迹象。这不会产生有效的 URL:不仅对于 Unicode 字符,%u 转义也会出现问题,而且 0x80-0xFF 的 % 转义也是错误的。因此,最好的修复方法是停止使用 escape() 并改用 encodeURIComponent() - bobince

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接