Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 16009|Yanıt: 2

[ASP.NET] URL kodlaması ve çözme ASP.NET

[Bağlantıyı kopyala]
Yayınlandı 12.01.2016 13:04:21 | | | |

Aşağıdaki iki URL'ye bakalım, aynı parametreleri mi geçiriyorlar?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Farklı görünüyor, ama aslında hepsi ".net teknolojisi" için UrlEncode kullanıyor, biri GB2312 kodlaması, diğeri ise Utf-8 kodlaması.
Aşağıdaki kod yukarıdaki kodlama etkinini elde edebilir:

string tmp1 = System.Web.HttpUtility.UrlEncode(".net technology", System.Text.Encoding.GetEncoding("GB2312"));
tmp2 dizisi = System.Web.HttpUtility.UrlEncode(".net teknolojisi", System.Text.Encoding.UTF8);

Gerçek web sayfalarımız diğer programlar tarafından çağrılabilir.
Örneğin, Çince basitleştirilmiş bir işletim sistemindeki ASP sayfası, Çince bir parametreyi ASP.net sayfasına aktarmak zorundadır.
Varsayılan olarak, Çin basitleştirilmiş işletim sistemlerinde, ASP'nin Server.UrlEncode yöntemi Çince'yi GB2312 kodlama ile kodlar.
Ancak varsayılan olarak, ASP.net sayfalar UTF-8 ile kodlanır.
Bu durumda, değeri kabul etmek için Request.QueryString["Tag"] kullandığınızda, Çince bilgisini kabul edemezsiniz ve adım adım hata ayıklama sırasında bozuk karakterler göreceksiniz.
Şu anda, Request.QueryString["Tag"] bozuk karakterlerle kabul edilse de, URL bu anda bozuk değildir.

Çözüm, URL'deki parametreleri kendiniz analiz etmek ve ardından parametrelerin değerlerini GB2312 kodlamasına göre çözmek, .net'in varsayılan UTF-8 kodlamasını kullanmak yerine.
Aslında, Microsoft da benzer şekilde karşılık gelen fonksiyonlar sağlıyor, böylece URL dizelerini analiz etmek için düzenli ifadeler kullanmak zorunda kalmıyoruz.

Demo kodu şöyledir:

q dizisi = Request.Url.Query;

System.Collections.Specialized.NameValueCollection nv =
System.Web.HttpUtility.ParseQueryString(q, System.Text.Encoding.GetEncoding("GB2312"));
Response.Write(nv["Tag"]);

Lutz Roeder'in .NET Reflector'ını kullanarak System.Web.HttpUtility.ParseQueryString yönteminin uygulanışına bakalım:
Sürekli kontrol edersek, URL parametre dizisi analizini nihayet yöneten kodun şu olduğunu görebiliriz:

System.Web.HttpValueCollection sınıfının aşağıdaki fonksiyonu, URL parametresinin ayrıştırmasını uygular
Burada her karakter tarafından yapılan bir analiz olduğunu görüyoruz.



Diğer tarafın bize ne tür bir kodlama yöntemi vereceği konusunda, bunu bir parametre olarak vermek en iyisidir, böylece kullanıcının bu parametresine göre şifresini çözebiliriz.




Önceki:Evimi çalışmak için stüdyo olarak mı dekore edeceğim?
Önümüzdeki:AssemblyInfo.cs dosya parametrelerinin özel açıklaması
 Ev sahibi| Yayınlandı 4.12.2024 17:15:50 |
.NET Core URL kodlaması ve kod çözmesi

 Ev sahibi| Yayınlandı 4.12.2024 17:35:32 |
Farklı karakter setleri aşağıdaki şekilde kodlanır:



Kod:



Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com