Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 16009|Svar: 2

[ASP.NET] URL-kodning och avkodning i ASP.NET

[Kopiera länk]
Publicerad på 2016-01-12 13:04:21 | | | |

Låt oss titta på följande två URL:er, skickar de samma parametrar?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Det verkar vara annorlunda, men faktiskt använder de alla UrlEncode för ".net-teknologi", men den ena är GB2312-kodning och den andra är Utf-8-kodning.
Följande kod kan uppnå ovanstående kodningseffekt:

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

Våra webbplatser kan kallas av andra program.
Till exempel behöver en ASP-sida i operativsystemet Kinesisk förenklad en kinesisk parameter till en ASP.net sida.
Som standard, på kinesiska förenklade operativsystem, kommer ASP:s Server.UrlEncode-metod att koda kinesiska med GB2312-kodning.
Men som standard är ASP.net sidor kodade i UTF-8.
I detta fall, när du använder Request.QueryString["Tag"] för att acceptera värdet, kommer du inte att kunna acceptera kinesisk information, och du kommer att se förvrängda tecken i steg-för-steg-felsökning.
För tillfället, även om Request.QueryString["Tag"] accepteras med oförvrängda tecken, är URL:en för tillfället inte förvrängd.

Lösningen är att analysera parametrarna i URL:en själv och sedan dekryptera parametrarnas värden enligt kodningen av GB2312, istället för att använda standardkodningen för .UTF-8.
Faktum är att Microsoft på liknande sätt tillhandahåller motsvarande funktioner, så vi behöver inte använda reguljära uttryck för att analysera URL-strängar själva.

Demokoden är följande:

string q = Request.Url.Query;

System.Collections.Specialiserad.NamnVärdeCollection nv =
System.Web.HttpUtility.ParseQueryString(q, System.Text.Encoding.GetEncoding("GB2312"));
Response.Write(nv["Tag"]);

Låt oss använda Lutz Roeders .NET Reflector för att titta på implementeringen av System.Web.HttpUtility.ParseQueryString-metoden:
Om vi fortsätter att kolla kan vi se att koden som slutligen hanterar URL-parametersträngsanalysen är följande:

Följande funktion i System.Web.HttpValueCollection-klassen implementerar parsning av URL-parametern
Här ser vi att det är en analys utförd av varje karaktär.



När det gäller vilken typ av kodningsmetod den andra parten ger oss, är det bäst att skicka den som en parameter, så att vi kan dekryptera den enligt användarens parameter.




Föregående:Ska jag dekorera mitt hus till en studio för att arbeta?
Nästa:AssemblyInfo.cs den specifika förklaringen av filparametrarna
 Hyresvärd| Publicerad på 2024-12-04 17:15:50 |
.NET Core URL-kodning och avkodning

 Hyresvärd| Publicerad på 2024-12-04 17:35:32 |
De olika teckenuppsättningarna kodas enligt följande:



Kod:



Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com