Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 16009|Odgovoriti: 2

[ASP.NET] Kodiranje in dekodiranje URL-jev v ASP.NET

[Kopiraj povezavo]
Objavljeno na 12. 01. 2016 13:04:21 | | | |

Poglejmo si naslednja dva URL-ja, ali prenašata enake parametre?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Zdi se, da je drugače, a v resnici vsi uporabljajo UrlEncode za ".net tehnologijo", eden pa je kodiranje GB2312, drugi pa Utf-8.
Naslednja koda lahko doseže zgornji učinek kodiranja:

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

Naše dejanske spletne strani lahko kličejo tudi drugi programi.
Na primer, pri Chinese Simplified mora ASP stran v operacijskem sistemu posredovati kitajski parameter na ASP.net stran.
Privzeto na kitajskih poenostavljenih operacijskih sistemih ASP-jeva metoda Server.UrlEncode kodira kitajščino z GB2312 kodiranjem.
Vendar so privzeto ASP.net strani kodirane v UTF-8.
V tem primeru, ko uporabite Request.QueryString["Tag"] za sprejem vrednosti, ne boste mogli sprejeti kitajskih informacij in boste videli popačene znake pri korak-po-koraku odpravljanju napak.
Trenutno, čeprav je Request.QueryString["Tag"] sprejet z nerazumljenimi znaki, URL trenutno ni popačen.

Rešitev je, da parametre v URL-ju analizirate sami, nato pa dešifrirate vrednosti parametrov glede na kodiranje GB2312, namesto da uporabite privzeto UTF-8 kodiranje .net.
Pravzaprav Microsoft prav tako ponuja ustrezne funkcije, tako da nam ni treba uporabljati regularnih izrazov za analizo URL nizov sami.

Demo koda je naslednja:

string q = Request.Url.Query;

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

Uporabimo Lutz Roederjev .NET Reflector za pregled implementacije metode System.Web.HttpUtility.ParseQueryString:
Če še naprej preverjamo, lahko vidimo, da je koda, ki na koncu obravnava analizo niza parametrov URL, naslednja:

Naslednja funkcija razreda System.Web.HttpValueCollection izvaja razčlenjevanje parametra URL
Tukaj vidimo, da gre za analizo, ki jo opravi vsak lik.



Kar zadeva, kakšno metodo kodiranja nam posreduje druga stran, je najbolje, da jo posredujemo kot parameter, da jo lahko dešifriramo glede na ta parameter uporabnika.




Prejšnji:Ali bom svojo hišo preuredil v atelje za delo?
Naslednji:AssemblyInfo.cs specifično razlago parametrov datoteke
 Najemodajalec| Objavljeno na 4. 12. 2024 17:15:50 |
Kodiranje in dekodiranje URL-jev .NET Core

 Najemodajalec| Objavljeno na 4. 12. 2024 17:35:32 |
Različni nabori znakov so kodirani takole:



Koda:



Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com