Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 16009|Vastaus: 2

[ASP.NET] URL-koodaus ja dekoodaus ASP.NET

[Kopioi linkki]
Julkaistu 12.1.2016 13.04.21 | | | |

Katsotaanpa seuraavia kahta URL-osoitetta, läpäisevätkö ne samat parametrit?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Vaikuttaa erilaiselta, mutta itse asiassa kaikki käyttävät UrlEncodea ".net-teknologiaan", mutta toinen on GB2312-koodaus ja toinen Utf-8-koodaus.
Seuraava koodi voi saada yllä olevan koodausvaikutuksen:

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

Verkkosivumme voivat olla muilla ohjelmilla.
Esimerkiksi kiinan yksinkertaistettu ASP-sivu käyttöjärjestelmässä tarvitsee kiinan parametrin ASP.net sivulle.
Oletuksena kiinalaisissa yksinkertaistetuissa käyttöjärjestelmissä ASP:n Server.UrlEncode-menetelmä koodaa kiinan GB2312-koodauksella.
Mutta oletuksena ASP.net sivut koodataan UTF-8:lla.
Tässä tapauksessa, kun käytät Request.QueryString["Tag"] hyväksyäksesi arvon, et voi hyväksyä kiinalaista tietoa, ja näet vaiheittaisessa virheenkorjauksessa sekavia merkkejä.
Tällä hetkellä, vaikka Request.QueryString["Tag"] hyväksytään sekavilla merkeillä, URL-osoite ei tällä hetkellä ole sekava.

Ratkaisu on analysoida URL-osoitteen parametrit itse ja purkaa parametrien arvot GB2312-koodauksen mukaisesti sen sijaan, että käyttäisit .netin oletus-UTF-8-koodausta.
Itse asiassa Microsoft tarjoaa vastaavat funktiot, joten meidän ei tarvitse käyttää säännöllisiä lausekkeita analysoidaksemme URL-merkkijonoja itse.

Demokoodi on seuraava:

merkkijono q = Request.Url.Query;

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

Käytetään Lutz Roederin .NET Reflectoria tarkastellaksemme System.Web.HttpUtility.ParseQueryString-menetelmän toteutusta:
Jos jatkamme tarkistamista, näemme, että koodi, joka lopulta hoitaa URL-parametrin merkkijonoanalyysin, on seuraava:

System.Web.HttpValueCollection-luokan seuraava funktio toteuttaa URL-parametrin jäsentämisen
Tässä näemme, että jokainen hahmo tekee analyysin.



Mitä tulee siihen, millaisen koodausmenetelmän toinen osapuoli meille välittää, on parasta välittää se parametrina, jotta voimme purkaa sen käyttäjän parametrin mukaan.




Edellinen:Aionko sisustaa kotini studioksi työskentelyä varten?
Seuraava:AssemblyInfo.cs tiedostoparametrien tarkka selitys
 Vuokraisäntä| Julkaistu 4.12.2024 17.15.50 |
.NET Core URL-koodaus ja dekoodaus

 Vuokraisäntä| Julkaistu 4.12.2024 17.35.32 |
Eri merkistöt koodataan seuraavasti:



Koodi:



Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com