Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 16009|Répondre: 2

[ASP.NET] Encodage et décodage d’URL dans ASP.NET

[Copié le lien]
Publié sur 12/01/2016 13:04:21 | | | |

Regardons les deux URL suivantes, remplissent-elles les mêmes paramètres ?
aaa.aspx ?tag=.net %BC %BC %CA %F5
aaa.aspx ?tag=.net %e6%8a %80 %e6%9c %af

Cela semble différent, mais en réalité, ils utilisent tous UrlEncode pour la « technologie .net », l’un est l’encodage GB2312 et l’autre l’encodage Utf-8.
Le code suivant peut obtenir l’effet d’encodage ci-dessus :

chaîne tmp1 = System.Web.HttpUtility.UrlEncode(« .net technology », System.Text.Encoding.GetEncoding(« GB2312 »)) ;
chaîne tmp2 = System.Web.HttpUtility.UrlEncode (« .net technology », System.Text.Encoding.UTF8) ;

Nos pages web réelles peuvent être consultées par d’autres programmes.
Par exemple, une page ASP simplifiée en chinois sur le système d’exploitation doit transmettre un paramètre chinois à une page ASP.net.
Par défaut, sur les systèmes d’exploitation simplifiés chinois, la méthode Server.UrlEncode d’ASP encodera le chinois avec un codage GB2312.
Mais par défaut, ASP.net pages sont encodées en UTF-8.
Dans ce cas, lorsque vous utilisez Request.QueryString[« Tag »] pour accepter la valeur, vous ne pourrez pas accepter les informations chinoises, et vous verrez des caractères brouillés dans le débogage étape par étape.
À ce stade, bien que Request.QueryString["Tag"] soit accepté avec des caractères brouillés, l’URL n’est pas brouillée pour l’instant.

La solution est d’analyser vous-même les paramètres de l’URL, puis de déchiffrer les valeurs des paramètres selon l’encodage de GB2312, au lieu d’utiliser l’encodage UTF-8 par défaut de .net.
En fait, Microsoft fournit également des fonctions correspondantes, donc nous n’avons pas à utiliser des expressions régulières pour analyser nous-mêmes les chaînes d’URL.

Le code de démo est le suivant :

chaîne q = requête.URL.requête ;

System.Collections.Spécialisée.CollectionValueCollection nv =
System.Web.HttpUtility.ParseQueryString(q, System.Text.Encoding.GetEncoding(« GB2312 »)) ;
Response.Write(nv["Tag"]) ;

Utilisons le réflecteur .NET de Lutz Roeder pour examiner l’implémentation de la méthode System.Web.HttpUtility.ParseQueryString :
Si nous continuons à vérifier, nous pouvons voir que le code qui gère finalement l’analyse des chaînes de paramètres URL est le suivant :

La fonction suivante de la classe System.Web.HttpValueCollection implémente l’analyse syntaxique du paramètre URL
Ici, on voit qu’il s’agit d’une analyse réalisée par chaque personnage.



Quant au type de méthode d’encodage que l’autre partie nous transmet, il est préférable de la passer comme paramètre, afin de pouvoir la déchiffrer selon ce paramètre de l’utilisateur.




Précédent:Est-ce que je vais décorer ma maison en atelier pour travailler ?
Prochain:AssemblyInfo.cs l’explication spécifique des paramètres du fichier
 Propriétaire| Publié sur 04/12/2024 17:15:50 |
Encodage et décodage des URL .NET Core

 Propriétaire| Publié sur 04/12/2024 17:35:32 |
Les différents jeux de caractères sont encodés comme suit :



Code:



Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com