参数传递问题

时间:2022-08-29 21:19:33
从a.asp页面向b.aspx页面传递中文参数
a.asp页面中有如下代码:
<%dim c,d
      c="参数传递"
      c=Server.UrlEncode(c)
%>
<a href="b.aspx?d=<%=c%>">转到</a>
在b.aspx中接收参数d:
<% String s;
          s=Request.QueryString["d"];
          s=Server.UrlDecode(s);
   Response.Write(s);
%>
在页面上显示一个"口"字,我这样编码对不对,望各位大侠帮我看看是什么问题,谢谢

16 个解决方案

#1


去掉c=Server.UrlEncode(c);和s=Server.UrlDecode(s);
看看!

#2


编码是否采用gb2312了,其实最好用cookies来传递,
先在a.asp:response.cookies["cansu"]="xxx";
再在b.aspx:x=request.cookies["cansu"].value;取出值,试一下吧。

#3


不行,我都试过了

#4


string dd
dd=Request.Cookies["canshu"].Value;
运行错误:未将对象引用设置到对象的实例。
这是怎么回事

#5


顶一下

#6


把web.config 中requestEncoding="utf-8" 改为gb2312以前也有人问这样的问题。应该可以实现的

#7


web.config:
<globalization 
            requestEncoding="gb2312" 
            responseEncoding="gb2312" 
   />

#8


第一个页面用了Server.UrlEncode.b页面就不要用Server.UrlDecode了,因为IE会自动转码的

#9


我这样试过了,还是不行啊,大哥们再想想是什么问题啊

#10


这样我也试过了,还是不行
从aspx页面到aspx页面正常
现在关键是从asp页面到aspx页面
大哥们想想是什么问题,有没解决的办法

#11


还有一点要说明一下:两个页面是在不同的浏览器运行的,a.asp在winwap模拟器中,b.aspx在ie中,但除了中文都可以正常接收
难道就没有解决的办法了

#12


ding

#13


难道就真的没有解决的办法了吗,不就是个参数传递吗
都在asp环境下,或者都在.net环境下都正常,就是在前者向后者就不行了,但两种环境下中文经过编码后是一样的,说明编码方式是相同的,唯一不同就是前者编码后字符串英文字母大写,后者小写。比如:几个中文在前者编码后为%C2%DD%CB%BF%B6%A4%B7%F0%C1%CB,后者为%c2%dd%cb%bf%b6%a4%b7%f0%c1%cb,高手们帮我看看是什么问题,
上面也提到了通过cookies来传递,但两种环境下的语法不同,
比如说在asp环境下写cookies:response.cookies("canshu")="xxx"
在.net环境下这样接收:string dd
                             dd=Request.Cookies["canshu"].Value;
运行错误:未将对象引用设置到对象的实例,如果在一种环境下就没这么多的麻烦
有其他的解决方法吗,多谢了

#14


zai ding

#15


应该和IE设置有关,改改编号吧
去掉Server.UrlEncode(c);Server.UrlDecode(s);吧!

#16


Jasonchen82(大森林) 大哥
怎么改编号呀,
去掉Server.UrlEncode(c);Server.UrlDecode(s);这样我试过了,不行

#1


去掉c=Server.UrlEncode(c);和s=Server.UrlDecode(s);
看看!

#2


编码是否采用gb2312了,其实最好用cookies来传递,
先在a.asp:response.cookies["cansu"]="xxx";
再在b.aspx:x=request.cookies["cansu"].value;取出值,试一下吧。

#3


不行,我都试过了

#4


string dd
dd=Request.Cookies["canshu"].Value;
运行错误:未将对象引用设置到对象的实例。
这是怎么回事

#5


顶一下

#6


把web.config 中requestEncoding="utf-8" 改为gb2312以前也有人问这样的问题。应该可以实现的

#7


web.config:
<globalization 
            requestEncoding="gb2312" 
            responseEncoding="gb2312" 
   />

#8


第一个页面用了Server.UrlEncode.b页面就不要用Server.UrlDecode了,因为IE会自动转码的

#9


我这样试过了,还是不行啊,大哥们再想想是什么问题啊

#10


这样我也试过了,还是不行
从aspx页面到aspx页面正常
现在关键是从asp页面到aspx页面
大哥们想想是什么问题,有没解决的办法

#11


还有一点要说明一下:两个页面是在不同的浏览器运行的,a.asp在winwap模拟器中,b.aspx在ie中,但除了中文都可以正常接收
难道就没有解决的办法了

#12


ding

#13


难道就真的没有解决的办法了吗,不就是个参数传递吗
都在asp环境下,或者都在.net环境下都正常,就是在前者向后者就不行了,但两种环境下中文经过编码后是一样的,说明编码方式是相同的,唯一不同就是前者编码后字符串英文字母大写,后者小写。比如:几个中文在前者编码后为%C2%DD%CB%BF%B6%A4%B7%F0%C1%CB,后者为%c2%dd%cb%bf%b6%a4%b7%f0%c1%cb,高手们帮我看看是什么问题,
上面也提到了通过cookies来传递,但两种环境下的语法不同,
比如说在asp环境下写cookies:response.cookies("canshu")="xxx"
在.net环境下这样接收:string dd
                             dd=Request.Cookies["canshu"].Value;
运行错误:未将对象引用设置到对象的实例,如果在一种环境下就没这么多的麻烦
有其他的解决方法吗,多谢了

#14


zai ding

#15


应该和IE设置有关,改改编号吧
去掉Server.UrlEncode(c);Server.UrlDecode(s);吧!

#16


Jasonchen82(大森林) 大哥
怎么改编号呀,
去掉Server.UrlEncode(c);Server.UrlDecode(s);这样我试过了,不行