Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 16009|Antwort: 2

[ASP.NET] URL-Codierung und -Dekodierung in ASP.NET

[Link kopieren]
Veröffentlicht am 12.01.2016 13:04:21 | | | |

Schauen wir uns die folgenden beiden URLs an: Geben sie die gleichen Parameter aus?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Es scheint anders zu sein, aber tatsächlich verwenden sie alle UrlEncode für ".net-Technologie", wobei einer GB2312-Codierung und der andere Utf-8-Codierung ist.
Der folgende Code kann den oben genannten Codierungseffekt erzielen:

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

Unsere Webseiten können von anderen Programmen aufgerufen werden.
Zum Beispiel muss eine ASP-Seite auf dem Betriebssystem in Chinesisch vereinfacht einen chinesischen Parameter an eine ASP.net Seite übergeben.
Standardmäßig kodiert auf chinesischen vereinfachten Betriebssystemen die Server.UrlCode-Methode von ASP das Chinesische mit GB2312-Codierung.
Aber standardmäßig sind ASP.net Seiten in UTF-8 codiert.
In diesem Fall können Sie, wenn Sie Request.QueryString["Tag"] verwenden, um den Wert zu akzeptieren, keine chinesischen Informationen mehr akzeptieren, und Sie werden beim Schritt-für-Schritt-Debugging verzerrte Zeichen sehen.
Derzeit wird Request.QueryString["Tag"] zwar mit verzerrten Zeichen akzeptiert, aber die URL ist derzeit nicht verzerrt.

Die Lösung besteht darin, die Parameter in der URL selbst zu analysieren und dann die Werte der Parameter gemäß der Codierung von GB2312 zu entschlüsseln, anstatt die Standard-UTF-8-Codierung von .net zu verwenden.
Tatsächlich stellt Microsoft ähnlich entsprechende Funktionen bereit, sodass wir keine regulären Ausdrücke verwenden müssen, um URL-Strings selbst zu analysieren.

Der Democode ist wie folgt:

string q = Request.Url.Query;

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

Verwenden wir Lutz Roeders .NET Reflector, um die Implementierung der System.Web.HttpUtility.ParseQueryString-Methode zu betrachten:
Wenn wir immer wieder nachsehen, sehen wir, dass der Code, der schließlich die Analyse der URL-Parameter-Strings verarbeitet, wie folgt ist:

Die folgende Funktion der System.Web.HttpValueCollection-Klasse implementiert das Parsing des URL-Parameters
Hier sehen wir, dass es sich um eine Analyse handelt, die von jeder Figur durchgeführt wird.



Was die Art von Codierungsmethode betrifft, die die andere Partei uns übergibt, ist es am besten, sie als Parameter weiterzugeben, damit wir sie entsprechend diesem Parameter des Benutzers entschlüsseln können.




Vorhergehend:Werde ich mein Haus in ein Atelier umbauen, um zu arbeiten?
Nächster:AssemblyInfo.cs die genaue Erklärung der Dateiparameter
 Vermieter| Veröffentlicht am 04.12.2024 17:15:50 |
.NET Core URL-Codierung und -Dekodierung

 Vermieter| Veröffentlicht am 04.12.2024 17:35:32 |
Die verschiedenen Zeichensätze sind wie folgt codiert:



Code:



Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com