打印本文 打印本文 关闭窗口 关闭窗口
net序列动态aspx页面传递中文参数出现乱码的解决方案
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1497  更新时间:2009/6/9 2:33:11  文章录入:mintao  责任编辑:mintao

        问题引入:当我们制作网站项目的时候,如果页面之间存在中文参数的传递,那么,在传递过程中,会出现乱码,常见的就是直接传递参数,在浏览器地址栏那里显示出乱码!一旦出现乱码,再次读取传递参数的值,极有可能接收到的数据是不正确的数据,这是致命性的错误!另外,地址栏显示出乱码,上网浏览您的网页的客官,会误认为您的网站挂马,或者带病毒,这会在无形之中让您的网站的受欢迎程度大打折扣!

        俺的切身体验:

        昨天晚上,俺下载了一个精典的绿色导航菜单,苦战一小时,终于将其制服,修改为符合自己网站的导航,谁知,将导航应用到ASPX页面时,老显示不出导航效果来,让俺郁闷不堪!之前俺曾经将其他的导航应用到ASPX页面,未曾出现这样的问题!

        百思不得其解,屡试不得要领!当时也曾经想到过编码的方式,在引用导航的页面中增加中文编码方式,可仍然无济于世!

        郁闷之余,昨夜3点左右,只得弃站而观看欧洲杯,以解我心头之痛!

        今天早上上班,忽然想到可以在网站项目的配置文件那里设置全局编码方式,只是抱着试一试的态度将其修改,结果令俺大吃一惊,效果出来了,成功拉!

        下面与大家一起来分享如何修改编码方式吧!       

         ①通过Web.config全局配置文件修改编码方式

        <configuration>
            <system.web>
                <globalization requestEncoding="gb2312" responseEncoding="gb2312" />
            </system.web>
        </configuration>

        上述代码,加入到Web.config相应位置即可!

        ②传递中文参数之前进行编码转换

        发送页面编码:

        js:
        var MyString=encodeURI("中文参数值");
        window.navigate("MyPage.aspx?MyString="+MyString);

        aspx:
        string MyString=Server.URLEncode("中文参数值");
        Response.Redirect("MyPage.aspx?MyString="+MyString);

        接收页面解码:

        aspx:
        string MyString = Server.URLDecode(Requext.querystring["MyString"]);

        js:
        var MyString = decodeURI(aaa);

        知识扩展:顺便扩展点知识吧,发个技术文章,文字太少了,不划算!

        表单提交中Get和Post方式的区别

        ①get是从服务器上获取数据,post是向服务器传送数据。
 
        ②get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。 

        ③对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。 

        ④get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
 
        ⑤get安全性非常低,post安全性较高。

打印本文 打印本文 关闭窗口 关闭窗口