ASP.NET读取ASP设置的Cookie

本文探讨了ASP设置的Cookie在ASP.NET中读取时出现的问题,包括下划线转义及中文乱码现象,并提供了相应的解决方案。

    这类问题通常在整合或二次开发ASP网站时遇到。按常理来说,浏览器的Cookie存放在客户端,实际上与服务端使用什么语言无关,但我们在实际操作过程中,总会遇到一些意想不到的问题。

    1. 当ASP写的Cookie的Key中带有下划线,例如我们在ASP中这样设置Cookie:

         Response.Cookies("Admin_User")="管理员";

    那么在aspx.cs的页面,使用Request.Cookie["Admin_User"]  ,是怎么都读不到的。在这里我写了一个循环,将当前cookie的所有Name与Value都输出了一遍,发现下划线“_”已经转义成了“%5F”,而使用Request.Cookie["Admin%5FUser"]  就可以得到我们想要的“管理员”了。

    遇到类似问题的朋友,不妨做这样的尝试。

    2. 还需要注意中文乱码的问题,不管我将字符集设置为GB2312,还是GBK,甚至是UTF-8都没法获得正确的中文,实际上问题出在ASP那边,ASP页面显示简体中文时,需要设置“代码页”(它可读写,整型数,用于表示显示页内容的字符集,简体中文为936,日文为932,ANSI为1252)。

   string cookie = System.Web.HttpUtility.UrlDecode(Request.Cookies["Admin%5FUser"].Value, System.Text.Encoding.GetEncoding(936));

    使用以上的方式,便可以获取包含中文的Cookie了。

   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值