|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。asp.net|cookie|cookies在微软推出.NET并举行了年夜范围的推行提高以后,ASP.NET渐渐进进了信息化体系开辟的支流。但与此同时,而用ASP开辟的旧体系面则临被整合,这时候,面对一个成绩:ASP与ASP.NET相互整应时,个中文COOKIES信息没法被互通共享,当利用ASP.NET写进中文COOKIES信息后,利用ASP举行读取,读出来的倒是乱码,而非中文。
厥后经由过程查找材料,一直地理论,终究找到了成绩的本源,中文COOKIES信息在ASP中没法被准确读获得缘故原由为个中文编码格局分歧。
开辟项目Web.config设置文件中有以下信息:
<!--环球化此节设置使用程序的环球化设置。-->
<globalizationrequestEncoding="utf-8"responseEncoding="utf-8"/>
据此可知,在没有举行项目特别设置的情形下,体系中的中文COOKIES信息默许是经由过程“utf-8”编码体例举行传送的,而ASP中中文COOKIES信息默许是经由过程“GB2312”编码体例举行传送的,以是ASP与ASP.NET的中文COOKIES信息在默许情形下没法被互通共享,但能够经由过程以下办法得以办理:
用以下办法举行写COOKIE操纵:
----------------------------------------------------------------
Name:WriteCookie(ByValstrCookieNameAsString,ByValstrKeyNameAsString,ByValstrKeyValueAsString)
Parameters:
[ByVal]strCookieName-cookie名字
[ByVal]strKeyName-键名字
[ByVal]strKeyValue-键值。
Return:String
----------------------------------------------------------------
PublicFunctionWriteCookie(ByValstrCookieNameAsString,ByValstrKeyNameAsString,ByValstrKeyValueAsString)AsString
DimobjEncAsSystem.Text.Encoding=System.Text.Encoding.GetEncoding("GB2312")
strKeyValue=System.Web.HttpUtility.UrlEncode(strKeyValue,objEnc)
System.Web.HttpContext.Current.Response.Cookies(strCookieName)(strKeyName)=strKeyValue
EndFunction
以上办法完成了ASP能够准确读取ASP.NET写进的中文COOKIES信息,但同时假如在ASP.NET中将读取过去的中文COOKIES信息间接在前台显现时还会显现为乱码,这是因为ASP.NET以“utf-8”编码体例显现“GB2312”编码体例的中文信息,以是呈现了成绩,能够用以下办法在前台页面准确显现中文信息:
DimuNameAsString=System.Web.HttpContext.Current.Server.UrlDecode(System.Web.HttpContext.Current.Request.Cookies(strCookieName)(strKeyName))
DimobjEncAsSystem.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信息:
SubCleanCookies()
DimiAsInteger
DimcookieAsSystem.Web.HttpCookie
Fori=0ToSystem.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
EndSub
但在经由过程以上办法扫除COOKIES信息并再次登录时ASP将不克不及读取ASP.NET的COOKIES,其缘故原由不知为什么,但在下面的扫除COOKIES信息办法中到场以下语句可办理没法准确扫除COOKIES信息的成绩:
System.Web.HttpContext.Current.Response.Cookies.Clear()
以上为自己在事情中的一些小小履历总结,大概会有禁绝确的中央,看人人批正!
我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。 |
|