Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
URL unicode参数解码C#_C#_Url_Unicode - Fatal编程技术网

URL unicode参数解码C#

URL unicode参数解码C#,c#,url,unicode,C#,Url,Unicode,我得到了一个包含参数的URL,其中一个是西里尔字母 文件编号必须为П005637-1。 我尝试了以下代码,但字符串仍然包含这些字符%u0417%u041f 不可能使用HttpUtility。如果您的目标是避免依赖于System.Web.dll,则通常会在中使用等效的方法: 然而,你会发现,即使这样,你的url也不会按照你想要的方式被解码 这是因为WebUtility.UrlDecode没有故意处理%unnn转义符号。请注意下面的评论: 如评论中所述,%unnn转义格式不符合标准,应尽可能避免使

我得到了一个包含参数的URL,其中一个是西里尔字母

文件编号必须为П005637-1。 我尝试了以下代码,但字符串仍然包含这些字符%u0417%u041f


不可能使用HttpUtility。

如果您的目标是避免依赖于
System.Web.dll
,则通常会在中使用等效的方法:

然而,你会发现,即使这样,你的url也不会按照你想要的方式被解码

这是因为
WebUtility.UrlDecode
没有故意处理
%unnn
转义符号。请注意下面的评论:

如评论中所述,
%unnn
转义格式不符合标准,应尽可能避免使用。您可以从中找到更多关于这方面的信息以及正确编码URL的方法


如果您对URL如何生成有任何控制,请考虑将其更改为符合标准的。否则,考虑添加<代码> Stase.Web.DLL<代码>作为依赖关系,找到另一个第三方库来完成任务,或者编写自己的解码器。正如前面所评论的,代码就在那里。

所以使用HttpUtility中的代码;最后一段可能重复+1<代码>%unnn通常表示客户端正在使用不推荐的JavaScript
escape()
函数。这不会生成有效的URL:不仅Unicode字符的
%u
转义出现,而且0x80–0xFF的
%
转义也错误。到目前为止,最好的解决方法是停止使用
escape()
,而是转到
encodeURIComponent()
public static String DecodeUrlString(this String url)
    {
        String newUrl;
        while ((newUrl = Uri.UnescapeDataString(url)) != url)
            url = newUrl;
        return newUrl;
    }
// *** 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.