2011-12-16 10 views
5

Boşluklu URL'im var ve boşlukları% 20 ile değiştirmek istiyorum (bunlardan kaçınıyor). UrlPathEncode bunu yapmalı, ancak aşağıda boşlukları olan url üzerinde çalışmaz. Birisi neden çalışmadığını açıklayabilir mi?UrlPathEncode boşluktan kaçmayın

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"); 
+2

Sen _path_ kodlamak için çalışıyorum, ama sen kaçan istediğiniz dizeleri _query string_ içindedir. – fge

cevap

8

verir. Sadece yolu, URL'sinin sorgu kısmı değil. Yol için bir boşluk eklerseniz ve bu kodu tekrar çalıştırırsanız, yol bölümündeki boşluğun bir %20 ile değiştirildiğini görürsünüz, ancak sorgu bölümündeki boşluklar görünmez.

Aramayı UrlPathEncode ile bire bir Uri.EscapeUriString olarak değiştirirseniz, yalnızca yolu değil, tüm URL'yi doğru şekilde kodlar.

1

Uri.EscapeDataString numaralı telefonu aramanız gerekir.

+0

Bu bir C#/javascript frankenlanguage, değil mi? – spender

+0

@spender: No; bu bir yazım hatası. Sabit; Teşekkürler. – SLaks

0
Uri.EscapeDataString("this is a test") 

Adından da anlaşılacağı gibi, UrlPathEncode yolunu kodlar

this%20is%20a%20test 
1

Sizin durumunuzda, '?' Dizesini (url.split ('?')) Ayırın. Bu size temel yol ve sorgu dizesini verecektir. Sonra temel yolu UrlPathEncode() ve UrlEncode() ile sorgu dizesi ile kodlayın. Sonra ikisini de ekleyin. Bu sorunu çözecektir.

örnek kod:

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(); 
} 
+0

URL daha fazla '' 'içermeli (olmamalıdır) olduğunda bir sorun var. – IvanH

+0

Bu durumda, url.Split (Char [], count) kullanın ve sayımı = 1 geçin. Bu probleminizi çözecektir. – smhnkmr

+0

Bu benim asıl sorun benim ana sorun değil, UrlEncode sorgu dizesinden bir bütün olarak kaçar ve bu yüzden sorgu dizesi sayfa kabul etmede doğru yorumlandığında ayırıcı olarak yorumlanmaz. – IvanH

İlgili konular