免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7907 | 回复: 4
打印 上一主题 下一主题

求教,utf-8编码PHP文件设置中文cookie,客户端js读取乱码的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-21 12:54 |只看该作者 |倒序浏览
所有的PHP文件和字符全部是utf-8编码的,整个网页也是utf-8编码的。
在PHP端执行setcookie('u','中文');
在客户端maxthon查看cookie信息,u=%E4%B8%AD%E6%96%87,其正好是‘中文’的utf-8编码。

这时我想在浏览器的html代码中,将cookie读出来,利用 somedom.innerHTML=这个值。
但在js中,无论怎么编码,出来的都是乱码。

使用phpinfo()来查看,

$_COOKIE['u'] 是 中文
$_SERVER["HTTP_COOKIE"] 是 u=?%E4%B8%AD%E6%96%87

前一个 $_COOKIE['u']怎么自动转码了?这点一直没有想明白?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-04-21 16:07 |只看该作者
输出页面信息前用header指定编码试试.

论坛徽章:
0
3 [报告]
发表于 2006-04-21 19:44 |只看该作者
js是unicode编码

论坛徽章:
0
4 [报告]
发表于 2006-04-24 14:30 |只看该作者
只有vbs的,有人改写成js的记得发给我一份

  1. <script language=vbs>  
  2. function urldecoding(vstrin)   
  3.         dim  i,strreturn,strSpecial  
  4.         strSpecial = "!""#$%&'()*+,/:;<=>?@[\]^`{  |}~%"  
  5.         strreturn = ""  
  6.         for i = 1 to len(vstrin)              
  7.                 thischr = mid(vstrin,i,1)  
  8.                 if thischr="%" then
  9.                         intasc=eval("&h"+mid(vstrin,i+1,2))  
  10.                         if  instr(strSpecial,chr(intasc))>0  then  
  11.                                 strreturn=  strreturn  &  chr(intasc)  
  12.                                 i=i+2  
  13.                         else  
  14.                                 intasc=eval("&h"+mid(vstrin,i+1,2)+mid(vstrin,i+4,2))  
  15.                                 strreturn=  strreturn  &  chr(intasc)  
  16.                                 i=i+5  
  17.                         end if  
  18.                 else  
  19.                         if thischr="+" then  
  20.                                 strreturn = strreturn & "  "  
  21.                         else  
  22.                                 strreturn = strreturn & thischr  
  23.                         end if  
  24.                 end if  
  25.         next  
  26.         urldecoding = strreturn  
  27. end function
  28. </script>
复制代码

论坛徽章:
0
5 [报告]
发表于 2006-04-24 17:01 |只看该作者
somedom.innerHTML = decodeURIComponent("%E4%B8%AD%E6%96%87");

setcookie函数会对cookie变量的值做一次urlencode操作
因为你恰好使用了utf-8编码,所以操作起来就很方便了。如果是其他编码,比如gb2312就需要就需要自己书写编码函数了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP