asp:

<%setCookie("user_id","test")%>   //传一个cookie ,名: user_id 值:test

javascript:

<script>
alert(getCookie("user_id")); //读取结果显示 null   晕!
</script>

用 firefox 查看cookie,发现浏览器存放的cookie有点不同。

cookie的名:user_id 改成了 user%5Fid

为什么名称会改变呢?我到百度搜索,找到原因:
http://bbs.chinaunix.net/thread-743431-1-1.html

原来当asp采用utf-8编码后,写入浏览器的cookie会进行 urlencode 编码。

解决办法就是在javascript里进行解码: decodeURIComponent

修改后的 javascript代码:

//设置名称为name,值为value的Cookie
function setCookie (name, value) 
{
var argc = setCookie.arguments.length;
var argv = setCookie.arguments; 
var path = (argc > 3) ? argv[3] : null; 
var domain = (argc > 4) ? argv[4] : null; 
var secure = (argc > 5) ? argv[5] : false; 
document.cookie = name + "=" + value + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); 
}

//删除名称为name的Cookie
function deletecookie (name) 

    var exp = new Date(); 
    exp.setTime (exp.getTime() - 1); 
    var cval = getCookie (name); 
    document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); 
}

//取得项名称为offset的cookie值
function getCookieVal (offset)
{
var cookie_content = decodeURIComponent(document.cookie);
var endstr = cookie_content.indexOf (";", offset); 
if (endstr == -1) endstr = cookie_content.length; return unescape(cookie_content.substring(offset, endstr));                               } 
                                      
//取得名称为name的cookie值
function getCookie (name) 
{
var arg = name + "="; 
var alen = arg.length; 
var cookie_content = decodeURIComponent(document.cookie);
var clen = cookie_content.length; 
var i = 0; 
while (i < clen) 
{
   var j = i + alen; 
   if (cookie_content.substring(i, j) == arg) 
   return getCookieVal (j); 
   i = cookie_content.indexOf(" ", i) + 1; 
   if (i == 0) break; 

return null; 
}

asp(utf-8) set cookie 用 javascript 读cookie发现一个问题的更多相关文章

  1. jQuery操纵cookie(原生javascript处理cookie)

    jQuery也是可以操作cookie的 1.首先下载jQuery.js 以及 jquery.cookie.js 这两个文件 2.安装(其实就是引用) <html>       <he ...

  2. JavaScript BOM Cookie 的用法

    JavaScript Cookie Cookie是计算机上存储在小文本文件中的数据.当Web服务器将网页发送到浏览器时,连接将关闭,服务器将忘记用户的所有内容.发明Cookie是为了解决“如何记住用户 ...

  3. JavaScript操作Cookie

    在Web开发中,我们经常使用Cookie保存一些不是非常敏高的数据.比如“下次自动登录”,“广告显示”等功能.定义是:某些网站为了辨别用户身份而存储在用户本地终端(主要是浏览器)上的数据.定义域RFC ...

  4. JavaScript中cookie的路径(path)和域(domain)

    cookie虽然是由一个网页所创建,但并不只是创建cookie的网页才能读 取该cookie.在默认情况下,与创建cookie的网页在同一目录或子目录下的所有网页都可以读取该cookie.但如果在这个 ...

  5. javascript 访问cookie信息

    在Javascript脚本里,一个cookie 实际就是一个字符串属性.当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值.每个cookie除了 name ...

  6. 【读书笔记--cookie】JavaScript权威指南 第六版

    遇到一些问题需要用cookie处理,正好读了一下犀牛书关于cookie的介绍,整理了一些笔记. cookie是指web浏览器存储的少量数据,同时它是与具体的web页面或者站点相关的. cookie数据 ...

  7. JavaScript 操作 Cookie

    转自作者:聂微东出处:http://www.cnblogs.com/Darren_code/      什么是 Cookie “cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器 ...

  8. JavaScript基础---Cookie

    内容提纲: 1.cookie 2.cookie局限性 3.其他存储 发文不易,转载请注明出处链接,谢谢! 随着Web越来越复杂,开发者急切的需要能够本地化存储的脚本功能.这个时候,第一个出现的方案:c ...

  9. 自己实现FormsAuthentication.SetAuthCookie方法,怎样在ASP.NET服务端代码中删除客户端Cookie

    如何手动设置AuthCookie ASP.NET中实现可以自己实现FormsAuthentication.SetAuthCookie方法,控制更为灵活 /// <summary> /// ...

随机推荐

  1. Linux下FastDFS分布式存储-总结及部署记录

    一.分布式文件系统介绍分布式文件系统:Distributed file system, DFS,又叫做网络文件系统:Network File System.一种允许文件通过网络在多台主机上分享的文件系 ...

  2. mysql连接数设置操作(Too many connections)及设置md5值的加密密码

    mysql在使用过程中,发现连接数超了~~~~ [root@linux-node1 ~]# mysql -u glance -h 192.168.1.17 -pEnter password: ERRO ...

  3. Nginx报错: "Too many open files accept" 和 "could not build the server_names_hash"

    一.访问Nginx时,报错:"accept() failed (24: Too many open files)"原因时:nginx的连接数超过了系统设定的最大值造成的. 处理办法 ...

  4. ZooKeeper 典型的应用场景——及编程实现

    如何使用 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储 ...

  5. Python_每日习题_0001_数字组合

    # Topic: There are four digits: 1, 2, 3 and 4. # How many different three digits can be formed witho ...

  6. 个人博客作业-Week1

    1.五个问题 1) 团队编程中会不会因为人们意见的分歧而耽误时间,最终导致效率降低? 2)软件团队中测试的角色应该独立出来吗 3)对于团队编程,如果没有时间测试他人的新功能,因此就不添加该新功能,那会 ...

  7. 【读书笔记】Linux内核设计与实现(第三章)

    3.1 进程 处于执行期的程序. 进程就是正在执行的程序代码的实时结果.内核需要有效而又透明地管理所有细节. 执行线程(简称线程):在进程中活动的对象.每个线程都拥有一个独立的程序计数器.进程栈和一组 ...

  8. sqlalchemy orm 操作 MySQL

    一.ORM介绍 orm英文全称object relational mapping,是对象映射关系程序,简单来说类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了 ...

  9. JavaScript的类、对象、原型、继承、引用

    以CSS为例,有一种为所有class为"xxxx"的元素添加样式(外联样式),那么所有class为xxx的元素样式就会改变,在css中像下面这么写: <html> &l ...

  10. 兼容IE-FireFox-Chrome的背景音乐播放

    以music目录下的kn.mp3文件为例: <bgsound src="music/kn.mp3" loop="-1"/> <audio sr ...