Microsoft が .NET を立ち上げ、大規模なプロモーションと普及を行った後、ASP.NET は徐々に情報システム開発の主流になりました。しかし同時に、ASP で開発された古いシステムは統合される際に、ASP と ASP.NET が統合されると、中国語の COOKIES 情報を相互に共有できないという問題に直面します。 ASP.NETを使用して書き込み ASPを使用して中国語のCOOKIES情報を読み込んだところ、読み込まれたのは中国語ではなく文字化けでした。
その後、情報を検索し、継続的に練習した結果、中国語の COOKIES 情報が ASP で正しく読み取れない原因は、中国語のエンコード形式が異なるためであることがわかりました。
開発プロジェクトの Web.config 構成ファイルには、次の情報が含まれています。
このことから、プロジェクトに特別な設定を行わなくても、システム内の中国語 COOKIES 情報は「utf-8」エンコード方式で送信されることがわかります。デフォルトでは、ASP の中国語 COOKIES 情報は「GB2312」エンコード方式で送信されるため、デフォルトでは ASP と ASP.NET の間で中国語 COOKIES 情報を共有できませんが、これは解決できます。次の方法:
COOKIE を記述するには、次のメソッドを使用します:
'----------------------------------------------------- -------- -----------------------
' 名前: WriteCookie(文字列としての ByVal strCookieName、文字列としての ByVal strKeyName、文字列としての ByVal strKeyValue)
'パラメータ:
'[ByVal] strCookieName - クッキー名
' [ByVal] strKeyName - キー名
'[ByVal] strKeyValue - キーの値。
' 戻り値: 文字列
'------------------------------------------------ - --------------
Public Function 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
方法
により、ASP.NETで書き込まれた中国語COOKIES情報をASPは正しく読み込むことができますが、同時にASP.NETで読み込んだ中国語COOKIES情報をそのままフロントに表示すると文字化けして表示されてしまいます。 ASP.NET は中国語の情報を「GB2312」エンコードで表示するために「utf-8」エンコードを使用するため、次のメソッドを使用してフロント ページに中国語の情報を正しく表示できます。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)
上記の方法でASPとASP.NET間で中国語のCOOKIES情報を共有できない問題は解決しましたが、エンコード方法を変更することで解決できるのでしょうか。 Web.config 設定ファイルで、「utf-8」エンコード方式を「GB2312」エンコード方式に変更すると、上記の問題を解決できるはずです。
ASP.NET では通常、次のメソッドを通じて COOKIES 情報をクリアします。
Sub CleanCookies()
Dim i を整数として
Dim cookie As System.Web.HttpCookie
i = 0 から 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)
次
End Sub
ただし、上記の方法で COOKIES 情報をクリアして再度ログインすると、ASP は ASP.NET の COOKIES を読み取れなくなります。 ただし、上記の COOKIES クリア方法に次のステートメントを追加します。 COOKIES 情報を正しくクリアできない問題は、情報によって解決できます。 質問:
System.Web.HttpContext.Current.Response.Cookies.Clear()
上記は、私の仕事上の経験の一部を要約したものです。不正確な点があるかもしれません。 . 修正していただければ幸いです。