Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 16009|Risposta: 2

[ASP.NET] Codifica e decodifica URL in ASP.NET

[Copiato link]
Pubblicato su 12/01/2016 13:04:21 | | | |

Diamo un'occhiata ai seguenti due URL, soddisfano gli stessi parametri?
aaa.aspx?tag=.net%BC%BC%CA%F5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Sembra diverso, ma in realtà tutti usano UrlEncode per la "tecnologia .net", mentre uno è la codifica GB2312 e l'altro la codifica Utf-8.
Il seguente codice può ottenere l'effetto di codifica sopra:

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

Le nostre pagine web possono essere chiamate da altri programmi.
Ad esempio, una pagina ASP semplificata in cinese nel sistema operativo deve passare un parametro cinese a una pagina ASP.net.
Di default, sui sistemi operativi semplificati cinesi, il metodo Server.UrlEncode di ASP codifica cinese con la codifica GB2312.
Ma di default, ASP.net pagine sono codificate in UTF-8.
In questo caso, quando usi Request.QueryString["Tag"] per accettare il valore, non potrai accettare informazioni cinesi e vedrai caratteri distorti nel debug passo dopo passo.
Al momento, sebbene Request.QueryString["Tag"] sia accettato con caratteri distorti, l'URL al momento non è distorto.

La soluzione è analizzare i parametri nell'URL da solo, e poi decifrare i valori dei parametri secondo la codifica di GB2312, invece di usare la codifica predefinita UTF-8 di .net.
Infatti, Microsoft fornisce analogamente funzioni corrispondenti, quindi non dobbiamo usare espressioni regolari per analizzare noi le stringhe URL.

Il codice demo è il seguente:

stringa q = Request.Url.Query;

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

Usiamo il .NET Reflector di Lutz Roeder per esaminare l'implementazione del metodo System.Web.HttpUtility.ParseQueryString:
Se continuiamo a controllare, possiamo vedere che il codice che finalmente gestisce l'analisi delle stringhe dei parametri URL è il seguente:

La seguente funzione della classe System.Web.HttpValueCollection implementa l'analisi del parametro URL
Qui vediamo che si tratta di un'analisi condotta da ciascun personaggio.



Per quanto riguarda il tipo di metodo di codifica che l'altra parte ci passa, è meglio passarlo come parametro, così da poterlo decifrare secondo questo parametro dell'utente.




Precedente:Decorerò la mia casa trasformandola in uno studio per lavorare?
Prossimo:AssemblyInfo.cs spiegazione specifica dei parametri del file
 Padrone di casa| Pubblicato su 04/12/2024 17:15:50 |
Codifica e decodifica URL .NET Core

 Padrone di casa| Pubblicato su 04/12/2024 17:35:32 |
I diversi set di caratteri sono codificati come segue:



Codice:



Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com