Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 16009|Atbildi: 2

[ASP.NET] URL kodēšana un dekodēšana ASP.NET

[Kopēt saiti]
Publicēts 12.01.2016 13:04:21 | | | |

Apskatīsim šādus divus URL, vai tie nodod tos pašus parametrus?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Šķiet, ka tas ir atšķirīgs, bet patiesībā viņi visi izmanto UrlEncode ".net tehnoloģijai", bet viens ir GB2312 kodējums, bet otrs ir Utf-8 kodējums.
Iepriekš minēto kodēšanas efektu var iegūt šāds kods:

virkne tmp1 = System.Web.HttpUtility.UrlEncode(".net tehnoloģija", System.Text.Encoding.GetEncoding("GB2312"));
virkne tmp2 = System.Web.HttpUtility.UrlEncode(".net tehnoloģija", System.Text.Encoding.UTF8);

Mūsu faktiskās tīmekļa lapas var izsaukt citas programmas.
Piemēram, ķīniešu vienkāršotā operētājsistēmas ASP lapai ir jānodod ķīniešu valodas parametrs ASP.net lapai.
Pēc noklusējuma ķīniešu vienkāršotajās operētājsistēmās ASP Server.UrlEncode metode kodēs ķīniešu valodu ar GB2312 kodējumu.
Bet pēc noklusējuma ASP.net lapas ir kodētas UTF-8.
Šādā gadījumā, izmantojot Request.QueryString["Tag"], lai akceptētu vērtību, jūs nevarēsit pieņemt ķīniešu valodas informāciju, un detalizētā atkļūdošanā redzēsit izkropļotas rakstzīmes.
Šobrīd, lai gan Request.QueryString["Tag"] tiek akceptēts ar izkropļotām rakstzīmēm, URL šobrīd nav izkropļots.

Risinājums ir analizēt URL parametrus un pēc tam atšifrēt parametru vērtības saskaņā ar GB2312 kodējumu, nevis izmantot .net noklusējuma UTF-8 kodējumu.
Patiesībā Microsoft līdzīgi nodrošina atbilstošas funkcijas, tāpēc mums pašiem nav jāizmanto regulārās izteiksmes, lai analizētu URL virknes.

Demonstrācijas kods ir šāds:

virkne q = Request.Url.Query;

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

Izmantosim Lutz Roeder .NET reflektoru, lai aplūkotu System.Web.HttpUtility.ParseQueryString metodes ieviešanu:
Ja mēs turpinām pārbaudīt, mēs varam redzēt, ka kods, kas beidzot apstrādā URL parametru virknes analīzi, ir šāds:

Šāda System.Web.HttpValueCollection klases funkcija īsteno URL parametra parsēšanu
Šeit mēs redzam, ka tā ir katra varoņa veiktā analīze.



Attiecībā uz to, kāda veida kodēšanas metodi otra puse nodod mums, vislabāk to nodot kā parametru, lai mēs to varētu atšifrēt saskaņā ar šo lietotāja parametru.




Iepriekšējo:Vai es gatavojos izrotāt savu māju par studiju, lai strādātu?
Nākamo:AssemblyInfo.cs konkrētu faila parametru skaidrojumu
 Saimnieks| Publicēts 04.12.2024 17:15:50 |
.NET Core URL kodēšana un dekodēšana

 Saimnieks| Publicēts 04.12.2024 17:35:32 |
Dažādas rakstzīmju kopas ir kodētas šādi:



Kods:



Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com