Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 16009|Atsakyti: 2

[ASP.NET] URL kodavimas ir dekodavimas ASP.NET

[Kopijuoti nuorodą]
Paskelbta 2016-01-12 13:04:21 | | | |

Pažvelkime į šiuos du URL, ar jie perduoda tuos pačius parametrus?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Atrodo, kad skiriasi, bet iš tikrųjų jie visi naudoja UrlEncode ".net technologijai", tačiau vienas yra GB2312 kodavimas, o kitas yra Utf-8 kodavimas.
Šis kodas gali gauti aukščiau nurodytą kodavimo efektą:

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

Mūsų tikrieji tinklalapiai gali būti iškviesti kitomis programomis.
Pavyzdžiui, supaprastinta kinų kalba operacinės sistemos ASP puslapyje turi perduoti kinų kalbos parametrą ASP.net puslapiui.
Pagal numatytuosius nustatymus Kinijos supaprastintose operacinėse sistemose ASP Server.UrlEncode metodas koduos kinų kalbą su GB2312 kodavimu.
Tačiau pagal numatytuosius nustatymus ASP.net puslapiai yra užkoduoti UTF-8.
Tokiu atveju, kai naudosite Request.QueryString["Tag"] reikšmei priimti, negalėsite priimti kiniškos informacijos, o žingsnis po žingsnio derindami matysite iškraipytus simbolius.
Šiuo metu, nors Request.QueryString["Tag"] yra priimtas su iškraipytais simboliais, URL šiuo metu nėra iškraipytas.

Sprendimas yra patiems išanalizuoti URL parametrus, o tada iššifruoti parametrų reikšmes pagal GB2312 kodavimą, o ne naudoti numatytąjį .net UTF-8 kodavimą.
Tiesą sakant, "Microsoft" panašiai teikia atitinkamas funkcijas, todėl mums nereikia naudoti reguliariųjų išraiškų, kad galėtume patys analizuoti URL eilutes.

Demonstracinis kodas yra toks:

eilutė q = Request.Url.Query;

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

Panaudokime Lutz Roeder .NET reflektorių, kad pažvelgtume į System.Web.HttpUtility.ParseQueryString metodo įgyvendinimą:
Jei nuolat tikrinsime, pamatysime, kad kodas, kuris galiausiai tvarko URL parametrų eilutės analizę, yra toks:

Ši System.Web.HttpValueCollection klasės funkcija įgyvendina URL parametro analizę
Čia matome, kad tai yra kiekvieno veikėjo atlikta analizė.



Kalbant apie tai, kokį kodavimo metodą mums perduoda kita šalis, geriausia jį perduoti kaip parametrą, kad galėtume jį iššifruoti pagal šį vartotojo parametrą.




Ankstesnis:Ar aš ketinu papuošti savo namus į studiją dirbti?
Kitą:AssemblyInfo.cs konkretų failo parametrų paaiškinimą
 Savininkas| Paskelbta 2024-12-04 17:15:50 |
.NET Core URL kodavimas ir dekodavimas

 Savininkas| Paskelbta 2024-12-04 17:35:32 |
Skirtingi simbolių rinkiniai koduojami taip:



Kodas:



Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com