C#UrlEncode但允许某些字符集

时间:2012-12-27 17:04:04

标签: c# unicode urlencode

我有一个应用程序,用户可以上传其名称可以包含非拉丁字符(如西里尔文或中文)的文件。例如:

http://localhost/привет мир.html

然后,我需要能够对非法和/或特殊字符(如空格)的文件名进行URL编码。当我对URI进行URL编码时,如下所示:

string uri = "http://localhost/привет мир.html";
string encoded = HttpUtility.UrlPathEncode(uri);
Console.WriteLine(encoded);

这给了我以下结果:

http://localhost/%d0%bf%d1%80%d0%b8%d0%b2%d0%b5%d1%82%20%d0%bc%d0%b8%d1%80.html

我真正想要的是:

http://localhost/привет%20мир.html

大多数浏览器都支持这种格式,我的用户(在这种情况下是俄语用户)需要能够在其语言和字符集中看到更易于显示的URL。

有没有办法对URL进行编码并让它不对某些字符集进行编码?

1 个答案:

答案 0 :(得分:3)

您需要创建自己的HttpEncoder

HttpEncoder Class - 备注部分介绍如何设置您的网站,以便HttpEncoderHttpUtility默认使用HttpServerUtilityHttpResponseHeader