日期:2014-05-16 浏览次数:21023 次
我通过传递教师ID、学年和学期从数据库查询出该教师所教的课程信息,展现在界面上,从数据库我能查询出数据,为什么在界面不出数据呢,我断点调试,发现这样一个现象。我在js中传递的参数,在一般处理程序中获取时,是这样显示的:
于是有了这篇文章的诞生,通过对此问题的搜索,让我了解了编码解码的一些基本知识。
在实际的开发中,我们在页面和页面之间进行数据传递的时候,有时我们会选择Get方式传递参数,例如:
url: "../handler/QueryCourseByTeacher.ashx?TeacherID=" + teacherID.value + "&SchoolYear=" +getschyearvalue + "&Semester=" + getsemestervalue + "&t=" + new Date().getTime(),这是用js传递参数给一般处理程序页面,然后将传递的参数作为参数,在数据库进行查找相关数据,其中getschyearvalue与getsemestervalue为中文参数,当我们使用这种方式去查找数据的时候,就会出现我上图中的乱码问题,因为我们需要注意的是:凡是通过get方式进行URL传递中文参数一定要进行URL编码!
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况,在服务器端的表单输入格式样子象这样:
theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
|
每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。 |