2011-09-07 15 views
5

Unicode içeren URL'ler nasıl kodlanır? Bunu bir komut satırı yardımcı programına aktarmak istiyorum ve önce onu kodlamalıyım.Url Unicode karakterler kodlayan

Örnek: http://zh.wikipedia.org/wiki/白雜訊

http://zh.wikipedia.org/wiki/%E7%99%BD%E9%9B%9C%E8%A8%8A olur.

+0

Unicode url kodlanmış Stackoverflow metin düzenleyicisi görünüyor. Aynı şeyi C# yapmak istiyorum. Gerçek Unicode URL'sini almak için bağlantıya tıklayın. – Tomas

+2

Yığın Taşımı bunu yapmadı - tarayıcınız işe yaramadı! URL'yi Unicode olarak görüntüler, ancak kopyaladığınızda kopyalanan metin URL kodlu dizgeyi içerir. –

+0

@KonradRudolph Tarayıcım, ancak, yapmadı. Çince karakterler olduğunu düşündüğüm şeyi görüyorum. :) –

cevap

7

Sen System.Web mecliste HttpUtility.UrlPathEncode yöntemi (tam .NET Framework 4 profili gerektirir) kullanabilirsiniz.

Yani, is şimdi bunu yapmanın doğru yolu,

var urlString = Uri.EscapeUriString("http://zh.wikipedia.org/wiki/白雜訊"); 
+0

Unicode karakterleri nasıl edinilir? URL, kullanıcılar tarafından geçirilecek ve URL'de Unicode karakterlerinin nerede göründüğünü bilmiyorum. – Tomas

+0

@Tomas: Yorumunuza yanıt olarak güncellenmiş cevap. –

+1

UrlPathEncode'un, ana makine adı dışında URL'deki yol ve diğer bölümlerindeki karakterler için yapılması gereken doğru şey olduğunu unutmayın. Bir IRI'nin ana bilgisayar adında Unicode karakterleriniz varsa, bunun bir URI'sini yapmak için bunları IDN algoritmasını (Punycode) kullanarak kodlamanız gerekir. – bobince

0
Server.UrlEncode(s); 

.NET dizeleri (UTF-8, belirli olması) yerli Unicode dizeleri böylece hiçbir şey sözde "içsel" Sunucu özelliği satışa sunulacak olsa (HttpServerUtility.UrlEncode çağırmak daha fazlasına ihtiyacınız Bunu yapmak isteyebileceğiniz asp.net'deki çoğu içerik. Artık UrlPathEncode kullanabilirsiniz değil MSDN göre

var encoded = HttpUtility.UrlPathEncode("http://zh.wikipedia.org/wiki/白雜訊"); 
+0

Yalnızca // karakteri, Unicode karakterlerini kodlamak istemiyorum. – Tomas

+0

Tüm URL değerlerini değil, tek tek parametre değerlerini kodlarsınız. – Matthew

+0

Unicode url'yi Server.UrlEncode (s) 'a iletirsem, tüm unicode karakterlerini aşağıdaki gibi özel URL karakterleriyle birlikte kodlayacaktır:,? ve // ​​bunu yapmak istemiyorum. – Tomas

0

Ben Türkçe karakter sorunu vardı. <a href="/@Html.Raw(string)" sorunu çözdü