首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UrlPathEncode不转义空格

UrlPathEncode不转义空格
EN

Stack Overflow用户
提问于 2011-12-16 22:00:42
回答 4查看 4K关注 0票数 5

我有带空格的Url,想用%20替换空格(转义它们)。UrlPathEncode应该这样做,但它不能在下面有空格的url上工作。有人能解释一下为什么它不工作吗?

代码语言:javascript
运行
复制
System.Web.HttpUtility.UrlPathEncode("http://a1.quickcatchlabs.com/phototemplates/football_blimp_1.html?i_url=http://lh3.ggpht.com/yf5lVBB_WNBvBHT1HoIzY1SG0-PY5zRCobP3vBacuSk9N346F7CeAIRSFOltR6ZC1-yf-MNKAcAd7bAZ_A=s612-c&i_name=Patriots  vs Redskins&i_venue_name=Gillette Stadium &i_venue_address=Foxborough , MA&d_Score_0=34&d_Score_1=27&d_Period_0=Final&p_name_0=Patriots &p_name_1=Redskins");
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-16 22:17:15

顾名思义,UrlPathEncode对路径进行编码。只是路径,而不是URL的查询部分。如果向path添加一个空格并再次运行该代码,您将看到path部分中的空格被%20替换,但查询部分中的空格没有被替换。

如果您将对UrlPathEncode的调用替换为对Uri.EscapeUriString的调用,它将正确地编码整个URL,而不仅仅是路径。

票数 9
EN

Stack Overflow用户

发布于 2011-12-16 22:03:20

你应该给Uri.EscapeDataString打电话。

票数 1
EN

Stack Overflow用户

发布于 2011-12-16 22:32:04

在您的示例中,将字符串拆分为'?'(url.split('?'))。它将为您提供基本路径和查询字符串。然后用UrlPathEncode()编码基本路径,用UrlEncode()编码查询字符串。然后两个都追加。这样就可以解决问题了。

示例代码:

代码语言:javascript
运行
复制
public string EncodeURL(string url)
{
    var encodedURL = new StringBuilder();
    var urls = url.Split('?');
    encodedUrl.Append(HttpUtility.UrlPathEncode(urls[0]));
    encodedUrl.Append(HttpUtility.UrlEncode(urls[1]));

    return encodedUrl.ToString();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8535256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档