Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 16009|Odpoveď: 2

[ASP.NET] Kódovanie a dekódovanie URL v ASP.NET

[Kopírovať odkaz]
Zverejnené 12. 1. 2016 13:04:21 | | | |

Pozrime sa na nasledujúce dve URL, prechádzajú rovnakými parametrami?
aaa.aspx?tag=.net%bc%c%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Zdá sa, že je to iné, ale v skutočnosti všetky používajú UrlEncode pre ".net technológiu", pričom jedno je kódovanie GB2312 a druhé Utf-8.
Nasledujúci kód môže dosiahnuť vyššie uvedený kódovací efekt:

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 skutočné webové stránky môžu byť volané inými programami.
Napríklad Chinese Simplified ASP stránka v operačnom systéme musí odovzdať čínsky parameter na ASP.net stránku.
Štandardne na čínskych zjednodušených operačných systémoch metóda Server.UrlEncode od ASP kóduje čínštinu s kódovaním GB2312.
Ale v predvolenom nastavení sú ASP.net stránky zakódované v UTF-8.
V takom prípade, keď použijete Request.QueryString["Tag"] na prijatie hodnoty, nebudete môcť prijať čínske informácie a pri postupnom ladení uvidíte nezrozumiteľné znaky.
V tomto čase, hoci je Request.QueryString["Tag"] akceptovaný s nezrozumiteľnými znakmi, URL adresa v tomto čase nie je skreslená.

Riešením je analyzovať parametre v URL sami a potom dešifrovať hodnoty parametrov podľa kódovania GB2312, namiesto použitia predvoleného UTF-8 kódovania .net.
V skutočnosti Microsoft podobne poskytuje zodpovedajúce funkcie, takže nemusíme sami používať regulárne výrazy na analýzu URL reťazcov.

Demo kód je nasledovný:

string q = Request.Url.Query;

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

Použime Lutz Roederov .NET Reflector na preskúmanie implementácie metódy System.Web.HttpUtility.ParseQueryString:
Ak to budeme kontrolovať späť, vidíme, že kód, ktorý nakoniec spracováva analýzu reťazcov URL parametrov, je nasledovný:

Nasledujúca funkcia triedy System.Web.HttpValueCollection implementuje parsovanie parametra URL
Tu vidíme, že ide o analýzu vykonanú každou postavou.



Čo sa týka spôsobu kódovania, ktorý nám druhá strana odovzdá, je najlepšie ho odovzdať ako parameter, aby sme ho mohli dešifrovať podľa tohto parametra používateľa.




Predchádzajúci:Budem si dom vyzdobiť na ateliér na prácu?
Budúci:AssemblyInfo.cs konkrétne vysvetlenie parametrov súboru
 Prenajímateľ| Zverejnené 4. 12. 2024 17:15:50 |
Kódovanie a dekódovanie URL v .NET Core

 Prenajímateľ| Zverejnené 4. 12. 2024 17:35:32 |
Rôzne znakové sady sú kódované nasledovne:



Kód:



Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com