asp页面向aspx页面传中文参数时出现乱码,如何解决?

维纳斯的眼泪 2012-01-26 07:57:24
没怎么接触过asp,前几天遇到个问题也一直没解决掉、、asp页面向aspx页面传中文参数时出现乱码,如何解决?
比如
asp代码
<a HREF="t.aspx?test=中文不行啊" TARGET="_blank">click</click>

aspx页面
<%@ Page Language="VB" Debug="true" %>

<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import NameSpace="System.Data.OleDb" %>

<script language="VB" runat="server">
Sub Page_Load()

Session("tt") = Request.QueryString.Item("test")
End Sub

</script>

<html>

<body>
<p>显示吧:</p> <a href="t.asp?rName=<%=Session("tt")%>" target="rFiles"><b><%=Session("tt")%></b></a>
<p><%=Request.QueryString.Item("test")%></p>
</body>
</html>


显示出来就变成了以下乱码:

显示吧:

IJ
IJ


我试过server.urlencode()和server.urldecode()不管用,改编码<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><meta http-equiv="Content-Type" content="text/html; charset=gb2312" />也不管用,希望高人能指点一下啊。。。
...全文
135 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2012-01-31
  • 打赏
  • 举报
回复
怎么不行啊?把你的机器远程让我们看一下,

另外,web.config里面要使用utf-8

<configuration>
<system.web>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
/>
</system.web>
</configuration>
维纳斯的眼泪 2012-01-31
  • 打赏
  • 举报
回复
上面的都试过了。。还是不行~郁闷ing
qjzsj 2012-01-28
  • 打赏
  • 举报
回复
html页面中是否包含charset?例如下面是utf-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

这个html文件是否保存为utf-8格式?

上面两个要统一。
Dogfish 2012-01-28
  • 打赏
  • 举报
回复
文件的保存编码。
孟子E章 2012-01-28
  • 打赏
  • 举报
回复
<a HREF="t.aspx?test=<%=Server.UrlEncode("中文不行啊")%>" TARGET="_blank">click</click>
维纳斯的眼泪 2012-01-27
  • 打赏
  • 举报
回复
自己顶起。。。
asp.net乱码解决方法 1、从IE地址栏中直接输入这个地址,访问没错;   2、做一个静态页,其中包括这个超链接,点击访问也没错;   3、就是把这个链接添加到这个功能块中,点击访问那边接收到的是乱码。   一开始,被这个问题也搞得头大,在google了一把后,总算是把问题给搞清楚了,其实只要这个链接地址不经过任何编码递是不会有问题的。但就是加到了这个功能块后,再点击,虽然这个候在IE地址栏里显示的还是"http://www.****.com/user.aspx?id=水天",但真正递过去的参数"水天"其实已经经过类似于Server.UrlEncode的操作了,当然默认是utf-8编码,正是由于这个原因,如果对方系统不进行相应的解码,直接操作该参数,就产生了以上的错误。   解决方法:   网上有很多解决之道,最常见的莫过于以下几点:   1、在web.config里配制,这个方法确实可行,但我想很多人不想用这种方法来解决,把整个项目的请求和回应都定为gb2312,我觉得不是一个好办法,有点本末倒置了,毕竟这会导致很多其它问题的出现。   2、把要包含该链接的aspx文档,修改其charset属性为gb2312。这个方法到也可以接受,不过对于该文中的问题还不是最好的方法,因为该功能块是可以动态添加到任何页面的,难道要去修改所有的页面?想想还是不太合适。 单个页面解决方案 添加   3、直接用Server.UrlEncode和Server.Decode进行加码和解码操作,这种方法对于发送方和接收方都在一个项目中是可行的,现在的问题是,我们要随意去访问别人的系统,所以只能弃用此方法了。   4、采用HttpUtility.UrlEncode(query, System.Text.Encoding.GetEncoding("GB2312"));对链接中的参数值进行gb2312的编码,这种方法,对方不用进行任何解码操作,直接接收参数则不会出现乱码。   一般提到最多的也就上面4种方法,其它的也跟这些大同小异。仔细分析后,觉得还是第4种方法最适合解决当前问题,把中文参数进行如4中的操作。但又出现另外一个问题,由于这是一个用户可以自由输入链接地址的功能,所以首先要做的就是得先分析这些链接URL,解析出参数,再对这些参数进行4中操作,然后再合拼成原来的URL地址。   幸亏,URL参数解析C#已经有类库的支持,不用再去写那些复杂的正则表达式来匹配了。

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧