JS传参出现乱码的种种分析


通常情况下,在web页面中引用js脚本输出内容是会出现乱码,这是由于js的编码和.net的编码方式不同造成的。
通常js的编码格式是Utf-8,.NET的编码格式是gb2312。如果两者编码方式不一致,那么乱码就出现了。
解决方法:
一种方法是在配置文件中的<system.web></system.web>节点内部添加
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />节点,
另一种方法是在页面使用:
<meta http-equiv="content-type" content="text/html;charset=gb2312">
第三种方法是传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。
传参:
string Name = "中文参数";
Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)) ;
解码:
string Name = Request.QueryString["Name"];
Response.Write(Server.UrlDecode(Name)) ;
如果是从html文件向aspx或ashx文件进行传递中文参数的话,一样要将传递的中文参数进行编码,在接收时再进行解码。
例如:
<script language="JavaScript">
function GoUrl()
{
var Name = "中文参数";
location.href = "B.aspx?Name="+escape(Name) ;
}
<body οnclick="GoUrl()">
接收:
string Name = Request.QueryString["Name"];
Response.Write(Server.UrlDecode(Name)) ;

js传递参数到ashx中处理:

url: 'http://www.cnblogs.com/ajax/ajax_User.ashx?Action=Search&conditions=' + escape(info),

string info = context.Server.HtmlDecode(context.Request.QueryString["conditions"]).ToString();


总结:
一般来说。设置web.config文件就可以了。但是如果你用 JavaScript 调用 webservice 方法的话(往webservice里面传递中文参数)。
设置 web.config 文件好象无效。或用
Response.Redirect("test1.aspx?111="+System.Web.HttpUtility.UrlEncode("中文")) ;
建议使用最后如果是从其他的页面获取中文参数没有乱码,那就更简单了
string message ="http://www.cnblogs.com/A.aspx?111="+System.Web.HttpUtility.UrlEncode("中文");
//发送请求
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(message) ;
//接受请求
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse() ;
Stream receiveStream = myHttpWebResponse.GetResponseStream() ;
StreamReader readStream = new StreamReader(receiveStream, System.Text.Encoding.GetEncoding("GB2312")) ;
//此为要取页面的返回值输出的返回结果
returnValue = readStream.ReadToEnd();
 

 

转载于:https://www.cnblogs.com/jsping/archive/2012/12/09/2809879.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值