<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-9161750109226343&dt=1191824828062&lmt=1175368398&alt_color=EDF8FF&format=336x280_as&output=html&correlator=1191824827859&channel=9629201885&url=http%3A%2F%2Fwww.itbulo.com%2Fedu%2F200606%2F101550.htm&color_bg=EDF8FF&color_text=333333&color_link=0033CC&color_url=9f9f9f&color_border=EDF8FF&ad_type=text_image&ref=http%3A%2F%2Fwww.baidu.com%2Fs%3Flm%3D0%26si%3D%26rn%3D10%26ie%3Dgb2312%26ct%3D0%26wd%3D%25BF%25AA%25B7%25A2%2Bcookies%26pn%3D10%26cl%3D3&cc=190&ga_vid=1818099379.1191824828&ga_sid=1191824828&ga_hid=1952937477&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=16&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> | 在微软推出.NET并进行了大规模的推广普及之后,ASP.NET逐渐进入了信息化系统开发的主流。但与此同时,而用ASP开发的旧系统面则临被整合,这时,面临一个问题:ASP与ASP.NET互相整合时,其中文COOKIES信息无法被互通共享,当使用ASP.NET写入中文COOKIES信息后,使用ASP进行读取,读出来的却是乱码,而非中文。 后来通过查找资料,不停地实践,终于找到了问题的根源,中文COOKIES信息在ASP中无法被正确读取得原因为其中文编码格式不同。 开发项目Web.config配置文件中有如下信息: <!-- 全球化 此节设置应用程序的全球化设置。 --> <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> 据此可知,在没有进行项目特殊配置的情况下,系统中的中文COOKIES信息默认是通过“utf-8”编码方式进行传递的,而ASP中中文COOKIES信息默认是通过“GB2312”编码方式进行传递的,所以ASP与ASP.NET的中文COOKIES信息在默认情况下无法被互通共享,但可以通过如下方法得以解决: 用如下方法进行写COOKIE操作: '---------------------------------------------------------------- ' Name: WriteCookie(ByVal strCookieName As String, ByVal strKeyName As String, ByVal strKeyValue As String) ' Parameters: ' [ByVal] strCookieName - cookie名字 ' [ByVal] strKeyName - 键名字 ' [ByVal] strKeyValue - 键值。 ' Return: String '---------------------------------------------------------------- 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 End Function 以上方法实现了ASP可以正确读取ASP.NET写入的中文COOKIES信息,但同时如果在ASP.NET中将读取过来的中文COOKIES信息直接在前台显示时还会显示为乱码,这是由于ASP.NET以“utf-8”编码方式显示“GB2312”编码方式的中文信息,所以出现了问题,可以用如下方法在前台页面正确显示中文信息: 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) 以上方法解决了中文COOKIES信息在ASP与ASP.NET中无法被互通共享的问题,不过不知可不可以通过修改Web.config配置文件中的编码方式,将“utf-8”编码方式改为“GB2312”编码方式解决上面的问题,应该是可以的,大家可以试一下,告诉我结果。 在ASP.NET中我们一般通过如下方法清除COOKIES信息: Sub CleanCookies() Dim i As Integer Dim cookie As System.Web.HttpCookie For i = 0 To 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) Next End Sub 但在通过以上方法清除COOKIES信息并再次登录时ASP将不能读取ASP.NET的COOKIES,其原因不知为何,但在上面的清除COOKIES信息方法中加入以下语句可解决无法正确清除COOKIES信息的问题: System.Web.HttpContext.Current.Response.Cookies.Clear() 以上为本人在工作中的一些小小经验总结,可能会有不准确的地方,望大家批正! http://hszfzjd.cnblogs.com/archive/2006/06/29/438779.html |