Chinaunix

标题: 请教一个 JAVASCRIPT 问题。 [打印本页]

作者: 梦恋情人    时间: 2003-09-10 16:49
标题: 请教一个 JAVASCRIPT 问题。
[code]





我在CGI中把"汉字" 变为16进制  babad7d6  (去掉了%号的 %ba%ba%d7%d6)编码为格式。 保存在COOKIE中

在网面中 中使用下面的JAVASCRIPT 函数 还原后变成了乱码     ×
作者: apile    时间: 2003-09-10 18:08
标题: 请教一个 JAVASCRIPT 问题。
Temp+='%'+str.substring(i,i+2);
作者: 梦恋情人    时间: 2003-09-10 18:39
标题: 请教一个 JAVASCRIPT 问题。
不行的,刚开始时也是  Temp+='%'+str.substring(i,i+2);

这样写的。

最后返回之前用 unescape().  但是不行,


试过用escape()把中文字编码。得到的是 %u9383   这样的码,而不是 %FF ,

有高手,有其它办法吗?
作者: apile    时间: 2003-09-10 18:53
标题: 请教一个 JAVASCRIPT 问题。
你為什麼要用escape???
Temp已經等於%ba%ba%d7%d6啦..
拿去http://xxxx/xxx.xx?abc=%ba%ba%d7%d6
Web Server 會自動幫你轉回來的...
如果你是要把babad7d6轉成gb碼的話...
可以考慮用$data = pack("H*","babad7d6");
一樣會轉回來...只是cookie也要用perl去切割..
%cookies = map split(/=/), split(/; /,$ENV{'HTTP_COOKIE'});

另外unescape是用來轉換Latin-1的字元..並非GB碼....
除非你的本文都是英文..否則還是用perl來處理比較好一點..:)
作者: 梦恋情人    时间: 2003-09-10 20:48
标题: 请教一个 JAVASCRIPT 问题。
CGI里没问题,我能处理。

babad7d6 是从COOKIE里读取的。我可不想为了这个值再去请求一次服务器。

问到底我的意思是用 JAVASCRIPT  怎么所 字符串%ba%ba%d7%d6   还原为中文。
作者: apile    时间: 2003-09-12 10:15
标题: 请教一个 JAVASCRIPT 问题。
你可能有點誤會我的意思...:)我的意思是說..你如果用Perl寫CGI..
可以用
%cookies = map split(/=/), split(/; /,$ENV{'HTTP_COOKIE'});
取得cookie裡面的數值...然後用
$data=pack("H*",$cookies{"CCCC"});
將該中文字取出來..
然後再寫回javascript中....
print <<TTT;
<script language=javascript>;
alert($data+"");
</script>;
TTT
   
如果都要用javascript..因為目前我不在公司...身邊沒書..:)
下星期再找找看...
Best Regards..
作者: 梦恋情人    时间: 2003-09-12 18:13
标题: 请教一个 JAVASCRIPT 问题。
谢谢楼上的好心人,你也把我意思搞反了,    我是在页面(html文件)中用javascript取得的COOKIE中的值,(%d4%d3)然后想转换为中文字。
作者: 飞灰橙    时间: 2003-09-12 18:29
标题: 请教一个 JAVASCRIPT 问题。
为什么不把汉字先用escape编码,再放到cookie里?
作者: apile    时间: 2003-09-15 08:40
标题: 请教一个 JAVASCRIPT 问题。
剛剛查了一下手邊的javascript語法辭典..只看到escape與unescape兩種,
只能轉換ISO-Latin-1與英文字,其他編碼,似乎沒有提供,也許對於java
script這種Client Side的語言..那是沒必要的..:)
建議你再改改代碼..為什麼不直接在cookie中使用中文??




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2