Après que Microsoft ait lancé .NET et mené une promotion et une vulgarisation à grande échelle, ASP.NET est progressivement entré dans le courant dominant du développement de systèmes d'information. Mais en même temps, l'ancien système développé avec ASP est actuellement confronté à un problème : lorsque ASP et ASP.NET sont intégrés, les informations chinoises sur les COOKIES ne peuvent pas être partagées. utiliser ASP.NET pour écrire Après avoir lu les informations des COOKIES chinois à l'aide d'ASP, ce qui a été lu était des caractères tronqués au lieu du chinois.
Plus tard, après avoir recherché des informations et pratiqué constamment, j'ai finalement trouvé la cause première du problème. La raison pour laquelle les informations chinoises sur les COOKIES ne peuvent pas être lues correctement dans ASP est que leur format de codage chinois est différent.
Le fichier de configuration Web.config du projet de développement contient les informations suivantes :
<!-- Globalisation Cette section définit les paramètres de globalisation de l'application. -->
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
On peut voir que sans configuration particulière du projet, les informations chinoises COOKIES dans le système sont transmises via la méthode de codage "utf-8" par défaut. , et les informations COOKIES chinois dans ASP sont transmises par défaut via la méthode de codage "GB2312", de sorte que les informations COOKIES chinois entre ASP et ASP.NET ne peuvent pas être partagées par défaut, mais elles peuvent être résolues par le méthodes suivantes :
Utilisez la méthode suivante pour écrire COOKIE :
'---------------------------------------- -------- -----------------------
' Nom : WriteCookie (ByVal strCookieName As String, ByVal strKeyName As String, ByVal strKeyValue As String)
'Paramètres :
'[ByVal] strCookieName - nom du cookie
' [ByVal] strKeyName - nom de la clé
'[ByVal] strKeyValue - valeur clé.
'Retour : chaîne
'------------------------------------------------ - ---------------
Fonction publique WriteCookie (ByVal strCookieName As String, ByVal strKeyName As String, ByVal strKeyValue As String) As String
Dim objEnc As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
strKeyValue = System.Web.HttpUtility.UrlEncode(strKeyValue, objEnc)
System.Web.HttpContext.Current.Response.Cookies(strCookieName)(strKeyName) = strKeyValue
Fonction de fin
La méthode ci-dessus permet à ASP de lire correctement les informations COOKIES chinois écrites par ASP.NET, mais en même temps, si les informations COOKIES chinois lues dans ASP.NET sont directement affichées à la réception, elles seront affichées comme tronquées. caractères. Étant donné qu'ASP.NET utilise le codage « utf-8 » pour afficher les informations chinoises dans le codage « GB2312 », un problème se produit. Vous pouvez utiliser la méthode suivante pour afficher correctement les informations chinoises sur la page d'accueil :
Dim uName As String =. System.Web.HttpContext.Current.Server.UrlDecode(System.Web.HttpContext.Current.Request.Cookies(strCookieName)(strKeyName))
Dim objEnc As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
uName = System.Web.HttpUtility.UrlDecode(uName, objEnc)
La méthode ci-dessus résout le problème selon lequel les informations sur les COOKIES chinois ne peuvent pas être partagées entre ASP et ASP.NET. Cependant, je me demande si elles peuvent être modifiées en modifiant la méthode de codage dans le fichier. Fichier de configuration Web.config, changer la méthode de codage "utf-8" en méthode de codage "GB2312" peut résoudre le problème ci-dessus. Vous pouvez l'essayer et me dire le résultat.
Dans ASP.NET, nous effaçons généralement les informations COOKIES via les méthodes suivantes :
Sub CleanCookies()
Dim i comme entier
Dim cookie en tant que System.Web.HttpCookie
Pour i = 0 Vers System.Web.HttpContext.Current.Request.Cookies.Count - 1
cookie = System.Web.HttpContext.Current.Request.Cookies(i)
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Value = ""
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Expires = DateAdd(DateInterval.Day, -1, Now)
Suivant
End Sub
Mais lorsque vous effacez les informations COOKIES via la méthode ci-dessus et que vous vous reconnectez, ASP ne pourra pas lire les COOKIES d'ASP.NET. La raison est cependant inconnue, en ajoutant l'instruction suivante à la méthode ci-dessus pour effacer les COOKIES. Ces informations peuvent résoudre le problème de l'impossibilité d'effacer correctement les informations COOKIES. Question :
System.Web.HttpContext.Current.Response.Cookies.Clear()
Ce qui précède est un résumé de certaines de mes expériences au travail. Il peut y avoir des inexactitudes. . J'espère que vous me corrigerez !