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一下就曉得了...其實你不需要做編碼的動作啦..


  1. #!/usr/bin/perl
  2. ## Split the parameter of CGI
  3. sub SplitParam {
  4.         if ($ENV{'REQUEST_METHOD'} eq 'POST')
  5.         {
  6.         read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
  7.         }
  8.         else
  9.         {
  10.         $buffer=$ENV{'QUERY_STRING'};
  11.         }
  12.         @pairs = split(/&/, $buffer);
  13.         foreach $pair (@pairs)
  14.         {
  15.          ($name, $value) = split(/=/, $pair);
  16.          $value =~ tr/+/ /;
  17.          $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  18.          $value =~ s/~!/ ~!/g;
  19.          if($FORM{$name} eq ""){
  20.             $FORM{$name} =$value;
  21.          }else{
  22.             if($FORM{$name} !~ /$value/){
  23.               $FORM{$name} .= ",".$value;
  24.             }
  25.          }
  26.         }
  27. }

  28. $input_t = $FORM{input_t};
  29. print "Content-type: text/html\n\n";
  30. print <<TTT;
  31. <html>;
  32. <head>;<title>;TTTT</title>;
  33. </head>;
  34. <body>;
  35. inpu_t  is $input_t
  36.                                                                                 
  37. <form name=form1 method="GET"  action="./tt2.pl">;
  38. <input type="text" name="input_t" value="">;
  39. <input type="submit" name="btnsubmit" value="送出">;
  40. </form>;
  41. </body>;
  42. </html>;
  43. 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-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