问题引入:当我们制作网站项目的时候,如果页面之间存在中文参数的传递,那么,在传递过程中,会出现乱码,常见的就是直接传递参数,在浏览器地址栏那里显示出乱码!一旦出现乱码,再次读取传递参数的值,极有可能接收到的数据是不正确的数据,这是致命性的错误!另外,地址栏显示出乱码,上网浏览您的网页的客官,会误认为您的网站挂马,或者带病毒,这会在无形之中让您的网站的受欢迎程度大打折扣!
俺的切身体验:
昨天晚上,俺下载了一个精典的绿色导航菜单,苦战一小时,终于将其制服,修改为符合自己网站的导航,谁知,将导航应用到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安全性较高。