C# url中文参数值js传递后台接收方法

今天项目中碰到一个问题,需要将用户在查询页面选择的查询条件传入到导出页面进行数据导出,传入给导出页面的参数内容如下:

<script language="javascript" type="text/javascript">

var export_str=" AND IsRecover='已回收' AND AtFactory='A工厂'";
'ComputerScrapExport.aspx?exportStr='+export_str+''

</script>


对于这种包含中文的问题解决,主要有如下几种解决方式:

1、将web.config配置文件globalization节点的编码方式改成gb2312,如下:

<system.web> 
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /> 
</system.web> 

以上这种方式因为是全局的,如果项目中有其它需求,可能无法达到预期效果,如javascript 调用webservices 。

2、单独修改aspx页面参数(这种方式没有试过,不知是否有效),如下:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

3、传递和接收URL在后台.aspx代码中处理

//请求URL中对中文编码
string Name = "中文参数"; 
Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)) ;

//接收端进行解码
string Name = Request.QueryString["Name"]; 
Response.Write(Server.UrlDecode(Name)) ;

4、在页面中用js进行url请求,后台进行处理,这个就是我项目中需求的方式了,如下:

//先使用js中的escape()
var export_str=escape(export_str);
'ComputerScrapExport.aspx?exportStr='+export_str+''

//接收页面后台接收方式,使用Server.UrlDecode()
public string exportStr
    {
        get
        {
            return string.IsNullOrEmpty(Server.UrlDecode(Request.QueryString["exportStr"])) ? "" : Server.UrlDecode(Request.QueryString["exportStr"].ToString());
        }
    }
原文地址:https://www.cnblogs.com/litao9026/p/4831260.html