zoukankan      html  css  js  c++  java
  • Request.Querystring中文乱码问题解决

    现象:近期项目中用到查询字符串传值,如果传递的是英文一切正常,但是传递中文时,使用request.querystring[]得到的是乱码。

    原因:不知道为什么,可能是编码不一致问题

    解决方法1:修改web.config文件添加<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />

    问题2:如果在网页中调用的第三方控件和编写了<script >代码的话,用gb2312编码的话,第三方控件会出错,

    原因:js一般用utf-8编码

    解决方法2:不修改web.config文件,只对需要传值的页面修改编码。在Page_Load()中添加解码语句,将传递至解码。

    使用到的命名空间System.collection.Specialized

    NameValueCollection nc = HttpUtility.ParseQueryString(Request.Url.Query, Encoding.GetEncoding("utf-8"));

    string sort = nc["Sort"];

    string zgdw = nc["Zgdw"];

    这样,用utf-8编码的字符串就可以正常解析出汉字了。

    解决方法3:asp.net对asp.net页面传值 

    进行传递 

    string Name = "中文参数"; 

    Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)); 

    进行接收 

    string Name = Request.QueryString["Name"]; 

    Response.Write(Server.UrlDecode(Name)); 

    解决方法4:javascript对asp.net页面传值。 

    <script language="javascript"> 

    function escode() 

    location.href ="B.aspx?Name="+escape(Name); 

    </script> 

    在asp.net页面中正常使用Request.QueryString("Name").toString()就可以得到正确的中文了

    解决方法5:

    <a href="#" onclick="window.location = encodeURI('<%# "PhoneManager.aspx?BMNAME="+DataBinder.Eval(Container.DataItem,"BMNAME")%>')">标题</a>

    在asp.net页面中使用Request["BMNAME"]就可以正常取得汉字了。 

  • 相关阅读:
    RabbitMQ实战(文摘)
    dex2jar 和 jd-gui 的安装与使用(转)
    asp.net core跨平台开发从入门到实战文摘
    hashCode() 和equals() 区别和作用(转)
    B+树和LSM比较(转)
    C#并发集合(转)
    文档docsify
    如何熟悉一个系统?(内含知识大图)
    新浪微博应对弹性扩容的架构演进
    iftop非交互式监控流量来源和去向
  • 原文地址:https://www.cnblogs.com/asdyzh/p/9747293.html
Copyright © 2011-2022 走看看