Chinaunix
标题:
这个应该算是微软的IE的JS bug吧!
[打印本页]
作者:
麻辣
时间:
2003-12-12 02:00
标题:
这个应该算是微软的IE的JS bug吧!
这个应该算是微软的IE的JS bug吧!
看这个页面
http://wefong.3322.org/sun/bbsutf-8/ccb/forums_list.cgi?forum=1
点文章作者麻辣,url地址出现乱码
javascript:Sun('u_name_view.cgi?&u_username=ÂéÀ±')
但,你查看网页原代码:
javascript:Sun('u_name_view.cgi?&u_username=%C2%E9%C0%B1')
网页原码是对的!只是,IE在打开的时候,给变成鬼了!
作者:
麻辣
时间:
2003-12-12 02:02
标题:
这个应该算是微软的IE的JS bug吧!
如何解决呢?
我怎么修改js代码解决这个问题?望大虾指点
js函数只是控制新窗口的样式属性,很简单
function Sun(para_URL){var URL=new String(para_URL);window.open(URL,'','top=0,left=5,menubar=no,toolbar=yes,location=yes,scrollbars=yes,resizable=yes')}
为什么IE汉字的js编码规则和url地址的规则不一样?
我对js一窍不通
作者:
apile
时间:
2003-12-12 10:32
标题:
这个应该算是微软的IE的JS bug吧!
如果我沒記錯..你的javascript應該要送
Sun('./xxx.pl?name=一二三&bbb=abc');
而不應該是你幫他轉碼後的資料.
因為IE會自動幫你編碼...
你如果幫他編碼了...只是多此一舉....:)
作者:
麻辣
时间:
2003-12-12 13:48
标题:
这个应该算是微软的IE的JS bug吧!
程序是转码了,不转码更不行,会出现汉字地址:
javascript:Sun('u_name_view.cgi?&u_username=麻辣')
而我要的是:
javascript:Sun('u_name_view.cgi?&u_username=%C2%E9%C0%B1')
作者:
apile
时间:
2003-12-12 13:57
标题:
这个应该算是微软的IE的JS bug吧!
你的url是從那裡抓來的呀??
數據庫?
看起來是從數據庫抓出來的....
所以你可能要看一下...
你的sql抓出來的到底是什麼東西???
javascript是client端的東西..送出來的時候..IE會自動編碼..
然後server端會自動解碼..找出你傳的資料...
作者:
麻辣
时间:
2003-12-12 15:33
标题:
这个应该算是微软的IE的JS bug吧!
麻辣是个变量,文本数据库中分离出来的一个变量。
这个变量是用户ID,是汉字
我给他转换为%%%了,就象百度,google。。也是这样啊,强行把汉字转码
作者:
apile
时间:
2003-12-12 17:51
标题:
这个应该算是微软的IE的JS bug吧!
google的事實上是HTTP送出去的時候,經過IE,mozilla轉碼後看到的的東西...因為他是用GET method送的...form裡面的method是GET..
所以其實不是他轉碼的..是IE轉碼後送出去的...
這段代碼你run一下就曉得了...其實你不需要做編碼的動作啦..
#!/usr/bin/perl
## Split the parameter of CGI
sub SplitParam {
if ($ENV{'REQUEST_METHOD'} eq 'POST')
{
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
else
{
$buffer=$ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/~!/ ~!/g;
if($FORM{$name} eq ""){
$FORM{$name} =$value;
}else{
if($FORM{$name} !~ /$value/){
$FORM{$name} .= ",".$value;
}
}
}
}
$input_t = $FORM{input_t};
print "Content-type: text/html\n\n";
print <<TTT;
<html>;
<head>;<title>;TTTT</title>;
</head>;
<body>;
inpu_t is $input_t
<form name=form1 method="GET" action="./tt2.pl">;
<input type="text" name="input_t" value="">;
<input type="submit" name="btnsubmit" value="送出">;
</form>;
</body>;
</html>;
TTT
复制代码
作者:
麻辣
时间:
2003-12-12 22:52
标题:
这个应该算是微软的IE的JS bug吧!
不做編碼的動作 更不行呀
有些服务器不支持汉字gb2312,造成不能运行,我宁可甩掉这些js来保证兼容性,这样就可以运行在任何服务器上
作者:
麻辣
时间:
2003-12-13 07:04
标题:
这个应该算是微软的IE的JS bug吧!
http://wefong.3322.org/sun/bbsutf-8/ccb/forums_list.cgi?forum=1&page=15&class=
你点里面的最后更新
同样的url地址.....
IE怎么会出两个标准,第二个没有js修饰语,就是正常的
作者:
apile
时间:
2003-12-14 23:05
标题:
这个应该算是微软的IE的JS bug吧!
我可能有點誤會你的問題了..
因為我看的時候..都是名字下面的URL是怪怪的..
即便現在也是一樣...但是名字部分..我看到都是正常的..:)
http://wefong.3322.org/sun/bbsutf-8/ccb/u_name_view.cgi?&u_username=%C2%E9%C0%B1
1234.JPG
(18.48 KB, 下载次数: 51)
下载附件
2003-12-14 23:08 上传
亂碼的地方..
作者:
麻辣
时间:
2003-12-15 10:15
标题:
这个应该算是微软的IE的JS bug吧!
你不要看那个,那个是等级
等级资料是后台设定的,当初设定的时候是安装的繁体版本CCB,变成乱码了
现在改了
作者:
apile
时间:
2003-12-15 13:36
标题:
这个应该算是微软的IE的JS bug吧!
:) 我大概知道你的意思了...
javascript屬於client side..所以你只能透過修改網頁的編碼
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">;
改成utf-8或其他編碼,
這樣子送過來與Server Side的編碼一致,自然不會有問題,
但是如果client端的編碼與Server端的不一樣,這問題就出來了..
因為編碼不同,所以會看到亂碼,Server Side得透過Encode
將編碼轉成相同的..但是因為不知道Client到底用啥編碼..所以很麻煩..
一般都設定上面那個meta..使得IE、Mozilla、Netscape的編碼用得與
Server一致...
至於兼容性的問題..Javascript有兩套標準,一套是Mozilla的..
另一套是MS的叫jscript...雖然很接近,但是並不完全相容...
就像HTML有For IE的跟For netscape一樣...
基本上我還是不認為直接送編碼會是個好辦法,
改<meta charset>;可能比較好..:)
作者:
麻辣
时间:
2003-12-15 14:15
标题:
这个应该算是微软的IE的JS bug吧!
谢谢:)
但<meta charset>;是固定的,gb2312啊
我有专门的utf-8版本,但上面的例子不是的
作者:
apile
时间:
2003-12-16 12:03
标题:
这个应该算是微软的IE的JS bug吧!
meta可以改的...utf-8一樣work..
碰到這種問題..我到寧可先檢查
ENV{LANG} ENV{LOCALE}
看看機器用什麼encode...
在決定meta要放置什麼..:)
作者:
麻辣
时间:
2003-12-16 19:45
标题:
这个应该算是微软的IE的JS bug吧!
meta可以改的...
改完了
其它的汉字都变乱码了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2