Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 16009|Válasz: 2

[ASP.NET] URL kódolás és dekódolás ASP.NET

[Linket másol]
Közzétéve 2016. 01. 12. 13:04:21 | | | |

Nézzük meg a következő két URL-t, ugyanazokat a paramétereket adják át?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Úgy tűnik, más, de valójában mind UrlEncode-ot használnak ".net technológiához", de az egyik GB2312 kódolás, a másik Utf-8 kódolás.
A következő kód képes elérni a fenti kódolási hatást:

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);

A valódi weboldalainkat más programok is hívhatják meg.
Például a Chinese Simplified (Chinese Simplified segítségével) egy operációs rendszer ASP oldalának kínai paramétert kell átadnia egy ASP.net oldalra.
Alapértelmezés szerint a kínai egyszerűsített operációs rendszereken az ASP Server.UrlEncode módszere GB2312 kódolással kódolja a kínai nyelvet.
De alapértelmezés szerint ASP.net oldalak UTF-8-ban vannak kódolva.
Ebben az esetben, amikor az érték elfogadásához használja az Request.QueryString["Tag"] funkciót, nem tudsz kínai információt elfogadni, és lépésről lépésre hibázott karaktereket fogsz látni.
Jelenleg bár az Request.QueryString["Tag"] elfogadható zavaros karakterekkel, az URL jelenleg nem zavaros.

A megoldás az, hogy magad elemezed az URL-ben lévő paramétereket, majd a GB2312 kódolása szerint dekódolod a paraméterek értékeit, ahelyett, hogy a .net alapértelmezett UTF-8 kódolását használnád.
Valójában a Microsoft hasonló funkciókat kínál, így nem kell rendszeres kifejezéseket használnunk az URL-láncok elemzéséhez.

A demográfiai kód a következő:

string q = Request.Url.Query;

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

Használjuk Lutz Roeder .NET Reflector-ját a System.Web.HttpUtility.ParseQueryString módszer megvalósításához:
Ha folyamatosan visszanézünk, láthatjuk, hogy a kód, amely végül kezeli az URL paraméter string elemzést, a következő:

A System.Web.HttpValueCollection osztály következő funkciója valósítja meg az URL paraméter elemzését
Itt azt látjuk, hogy minden karakter által végzett elemzés.



Ami azt illeti, hogy a másik fél milyen kódolási módszert ad nekünk, a legjobb, ha paraméterként adjuk át, hogy a felhasználó paramétere szerint tudjuk dekódolni.




Előző:A házamat stúdióvá fogom rendezni, hogy dolgozzak?
Következő:AssemblyInfo.cs a fájlparaméterek konkrét magyarázata
 Háziúr| Közzétéve 2024. 12. 04. 17:15:50 |
.NET Core URL kódolás és dekódolás

 Háziúr| Közzétéve 2024. 12. 04. 17:35:32 |
A különböző karakterkészletek a következőképpen vannak kódolva:



Kód:



Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com