See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 16009|Vastuse: 2

[ASP.NET] URL-i kodeerimine ja dekodeerimine ASP.NET

[Kopeeri link]
Postitatud 12.01.2016 13:04:21 | | | |

Vaatame järgmisi kahte URL-i, kas need läbivad samu parametreid?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Tundub, et see on erinev, kuid tegelikult kasutavad nad kõik UrlEncode'i ".net tehnoloogia" jaoks, kuid üks on GB2312 kodeerimine ja teine Utf-8 kodeerimine.
Järgmine kood võib saavutada ülaltoodud kodeerimisefekti:

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

Meie veebilehti võivad kutsuda ka teised teenused.
Näiteks hiina lihtsustatud ASP leht operatsioonisüsteemis peab edastama hiina parameetri ASP.net lehele.
Vaikimisi kodeerib Hiina lihtsustatud operatsioonisüsteemidel ASP Server.UrlEncode meetod hiina keelt GB2312 kodeeringuga.
Kuid vaikimisi kodeeritakse ASP.net lehekülgi UTF-8 formaadis.
Sellisel juhul, kui kasutad Request.QueryString["Tag"] väärtuse vastuvõtmiseks, ei saa sa hiina infot vastu võtta ning näed samm-sammult siludes segaseid märke.
Praegu, kuigi Request.QueryString["Tag"] aktsepteeritakse segaste tähemärkidega, ei ole URL sel ajal segane.

Lahendus on analüüsida URL-i parameetrid ise ja seejärel dekrüpteerida parameetrite väärtused vastavalt GB2312 kodeerimisele, selle asemel et kasutada vaikimisi UTF-8 kodeeringut .net.
Tegelikult pakub Microsoft samamoodi vastavaid funktsioone, nii et me ei pea ise URL-i stringide analüüsimiseks kasutama regulaarseid avaldisi.

Demokood on järgmine:

string q = Request.Url.Query;

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

Kasutame Lutz Roederi .NET peegeldajat, et vaadata System.Web.HttpUtility.ParseQueryString meetodi teostust:
Kui me jätkame kontrollimist, näeme, et kood, mis lõpuks haldab URL-parameetrite stringi analüüsi, on järgmine:

Järgmine funktsioon System.Web.HttpValueCollection klassis rakendab URL-parameetri parsimist
Siin näeme, et iga tegelase analüüs on läbi.



Mis puudutab kodeerimismeetodit, mida teine pool meile edastab, siis on kõige parem edastada see parameetrina, et saaksime selle kasutaja parameetri järgi dekrüpteerida.




Eelmine:Kas ma kavatsen oma maja stuudioks sisustada, et töötada?
Järgmine:AssemblyInfo.cs failiparameetrite konkreetne selgitus
 Üürileandja| Postitatud 04.12.2024 17:15:50 |
.NET Core URL-i kodeerimine ja dekodeerimine

 Üürileandja| Postitatud 04.12.2024 17:35:32 |
Erinevad märgikomplektid kodeeritakse järgmiselt:



Kood:



Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com