HttpServerUtility.UrlPathEncode
ve HttpServerUtility.UrlEncode
arasındaki fark nedir? Ve diğerini ne zaman seçmeliyim?HttpServerUtility.UrlPathEncode vs HttpServerUtility.UrlEncode
cevap
Güncelleştirme: MSDN başvurusu başına 4.5, Microsoft tarafından UrlEncode kullanılmasını önerir. Ayrıca, daha önce MSDN'de listelenen bilgiler iki yöntemin davranışını tam olarak açıklamamaktadır - yorumlara bakın.
Aradaki fark kaçıyor - UrlEncode onları + işaretine kaçıyor, UrlPathEncode% 20'ye kaçıyor. + ve% 20, yalnızca QueryString bölümü per W3C'un parçasıysa eşdeğerdir. Yani, + işaretini, yalnızca querystring bölümünü kullanarak tüm URL'den kaçamazsınız. Alt satırda UrlPathEncode Sen UrlEncode() yöntemiyle veya UrlPathEncode() metodu ile kullanarak bir URL kodlamak hep
imho iyi olduğudur. Ancak, yöntemler farklı sonuçlar döndürür. UrlEncode() yöntemi, her boşluk karakterini artı karakterine (+) dönüştürür. UrlPathEncode() yöntemi, her boşluk karakterini onaltılık gösterimde bir alanı temsil eden "% 20" dizesine dönüştürür. Herhangi bir platformun veya tarayıcının kod çözmeyi gerçekleştirmesine bakılmaksızın, tutarlı bir kodu çözülmüş URL'yi garanti etmek için URL'nin yol bölümünü kodlarken, UrlPathEncode() yöntemini kullanın.
'u kullanmanız gerekir. Belgelerin gerçekten bunu netleştirmesine rağmen, aslında yalnızca alanların işlenmesinden daha fazla fark vardır. UrlEncode, "?" Gibi karakterleri kodlayacak ve UrlPathEncode tarafından yok sayılan "&". Ayrıca bkz. Http://connect.microsoft.com/VisualStudio/feedback/details/551839/error-in-documentation-for-httpserverutility-urlpathencode –
Ayrıca UrlPathEncode, "?" Ifadesinin ilk oluşumundan sonra hiçbir şeyi kodlamaz. Geri kalanının sorgu dizesi olduğunu varsayar ve sorgu dizesinin zaten kodlanmış olduğunu varsayar. –
Yani temelde UrlPathEncode sorgu dizesi dışında her şey için kullanılmalıdır? – TheGateKeeper
UrlEncode (her =, sağ, sol ya da özellikle çok) sorgu dizisi değerleri için yararlıdır. bu url olarak
, foo, fooval, bar ve barval HER ayrı UrlEncode'd edilmelidir:
UrlEncode şeyi kodlar, böyle % -style kodlamasına, &, = ve /, aksanlı veya diğer ASCII olmayan karakterler vb. + olarak kodlar. Bu form-tarzı kodlamadır ve (& gibi) url'nin kontrol karakterleri ile tüm jiggy almadan bir sorgu olarak querystring koymak (ya da bir URL'de iki eğik çizgi arasında) için bir şey için en iyisidir. Aksi halde maalesef & veya = kullanıcının form girişinde veya db değeri değerinde bir şeyler kırılabilir.
DÜZENLEME: Uri.EscapeDataString UrlEncode çok yakın maç olduğunu ve kesin farklılıkları bilmiyorum ama, tercih edilebilir.
UrlPathEncode, sorgu dizesinin geri kalanı için kullanışlıdır, herşeyi soldaki herşeyi etkiler.
Bu URL'de, tüm URL (http'dan barval'a) UrlPathEncode yoluyla çalıştırılmalıdır.
UrlPathEncode kodlamak DEĞİLDİR?, &, = veya /.Ancak, UrlEncode gibi,% notasyonu ile aksanlı/ASCII olmayan karakterleri kodlar ve boşluk da% 20 olur. Bu, boşlukların ve aksanlı karakterlerin bulunmadığından, URL'nin geçerli olduğundan emin olmak için kullanışlıdır. Sorgusuza dokunmayacak (her şey sağda olacak mı?), Bu nedenle yukarıdaki URL ile kodlamak zorundasınız. [HttpUtility.UrlEncode genel Server.URLEncode] arasında
+1 Bu doğru cevaptır. – Zano
UrlPathEncode özünde buggy; doğru şekilde çalışamaz. URL'yi düşünün http://example.com/really?-unexpected-truths?id=3&user=eamon & co' Amaç, ilk soru işaretinin url'nin bir parçası olduğu ve ikincisinin uri'sinin sınırlayıcısı olduğu yönündedir. bileşen, ama bilmenin bir yolu yok. Ve amaç yine ilk '&' bir sınırlayıcı olmak ve ikincisi de içerik olmaktır… ama yine de bilmenin bir yolu yoktur. Kodlamanın * tüm noktası *, verilerin, alttaki biçim tarafından kullanılan özel kontrol karakterlerini içerebilmesidir, böylece * bu şekilde kodlayamazsınız. –
'UrlEncode' basitçe standart olmayan, EscapeDataString'in eski bir sürümüdür. Bunun yerine kullanın; Oluşturulan uri'nin güvenilir taşınabilirliğini istiyorsanız, 'UrlEncode' kullanmayın. –
- 1. ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?
- 2. & vs * ve | VS +
- 3. SpiderMonkey vs JavaScriptCore vs?
- 4. VS
- 5. VS
- 6. IDataErrorInfo vs ValidationRule vs Exception
- 7. cudaStreamSynchronize vs CudaDeviceSynchronize vs cudaThreadSynchronize
- 8. visualvm vs JProbe vs JProfiler
- 9. _mm_load_ps vs. _mm_load_pd vs. etc
- 10. pycuda vs theano vs pylearn2
- 11. is_numeric() vs is_float() vs is_int()
- 12. TextColor vs TextColorPrimary vs TextColorSecondary
- 13. GridView vs DataList vs için Repeater vs ListView 'in performansı
- 14. Qt: UI ile vs vs ile xml vs ile qml
- 15. Barındırma PowerShell: PowerShell vs. Runspace vs. RunspacePool vs. Pipeline
- 16. Python vs Jython vs IronPython vs wxPython arasındaki fark nedir?
- 17. Oyun geliştirmeye nereden başlayacaksınız? UIKit vs Core Animation vs QuartzCore vs OpenGL vs Cocos2D
- 18. XAML vs WPF vs Store App vs Phone App vs UWA
- 19. RhinoMock: Mocks Vs StrictMocks Vs DynamicMocks
- 20. Resim vs Fotoğraf vs. Görüntü - Adlandırma modelleri
- 21. Clojure listesi vs vektör vs set
- 22. grails def vs Nesne vs Void
- 23. CSS "::" vs ":" - sözde seçici vs psödo seçici?
- 24. arasındaki fark django.test.TestCase vs unittest vs django.utils.unittest.TestCase
- 25. Scala - plus kolon vs çift kolon (+: vs: :)
- 26. dotNetRDF VS Jena.NEt VS diğerleri ile Dotnet?
- 27. Python verimi vs vs multiple ifs
- 28. Blanket.js vs Istanbul-js vs JSCover
- 29. ASP.Net vs MVC vs WebAPI ve UseTaskFriendlySynchronizationContext
- 30. Bağımsız Yönetici Vs. İplik Vs. Mesos
olası yinelenen (http://stackoverflow.com/questions/602642/server-urlencode-vs-httputility-urlencode) (cevaplar UrlPathEncode' 'referansları içerir) –
Disagree . Diğer sorunun cevabı UrlPathEncode'a atıfta bulunsa da, soru açıkça aynı değildir. –
Lütfen HttpServerUtility.UrlPathEncode'u kullanmayın. HttpServerUtility.UrlEncode –