• C# asp.net页面通过URL参数传值中文乱码问题解决办法


    1.编码string state=Server.UrlEncode(stateName.Text.Trim());
    Response.Redirect("aaa.aspx?state="+state+"");

    2.解码(aaa.aspx)

    string state= Server.UrlDecode(Request.QueryString["state"].ToString());

    是GB2312编码的,参数传值是UTF-8编码的

     

    解决的方法一般有3种:

    1.设置web.config文件

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

     

    2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。
    >> 进行传递

    string Name = "中文参数";
    Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)) ;

    >> 进行接收

    string Name = Request.QueryString["Name"];
    Response.Write(Server.UrlDecode(Name)) ;

     

    3.如果是从 .HTML 文件向 .Aspx 文件进行传递中文参数的话(即不从后台用 Redirect()方法进行 Url 转换)。一样要将传递的中文参数进行编码,在接收时再进行解码。
    >> 进行传递

    <script language="JavaScript">
    function GoUrl()
    {
    var Name = "中文参数";
    location.href = "B.aspx?Name="+escape(Name) ;
    }
    <body onclick="GoUrl()">


    >> 进行接收

    string Name = Request.QueryString["Name"];
    Response.Write(Server.UrlDecode(Name)) ;
    总结:
    一般来说。设置web.config文件就可以了。但是如果你用 JavaScript 调用 webservice 方法的话(往webservice里面传递中文参数)。设置 web.config 文件好象无效。
    或用

    Response.Redirect("test1.aspx?111="+System.Web.HttpUtility.UrlEncode("中华人明共和国")) ;

  • 相关阅读:
    thinkphp验证码功能
    thinkphp表单验证
    thinkphp操作数据库的CRUD
    thinkphp基础知识
    什么是预测区间,置信区间与预测区间二者的异同是什么?
    好消息! 不用再羡慕Python有jupyter 我R也有Notebook了【附演示视频】
    手把手教你在Windows环境下升级R
    Feather包实现数据框快速读写,你值得拥有
    pycharm设置字体大小
    pycharm显示行号
  • 原文地址:https://www.cnblogs.com/lgx5/p/5816841.html
Copyright © 2020-2023  润新知