最近在做一个教务系统,在一处需要通过URL传递教师名称,测试中发现一个奇怪的问题,教师名字如果是2个字则没问题,如果是3个字当用Request("TeacherName")获取时会少一个字,难道说.Net和名字是3个字的人有仇?郁闷了(我自己也是3个字的名字)……
郁闷了5秒钟以后想到了UrlEncode这位大仙,于是Server.UrlEncode(TeacherName),MMD,问题依旧,再次郁闷……
于是发挥"Why"时代人的风范——问同事,同事也觉得奇怪,不过提供了一个有价值的线索,UrlEncode这位大仙有2个家,还有一个是HttpUtility,查了MSDN发现果然是这样,UrlEncode分别是两个对象的成员:HttpServerUtility和HttpUtility,而HttpServerUtility 类的方法和属性通过 ASP.NET 的内部Server对象公开。
抱着对.Net的最后一点信任,我试了一下HttpUtility.UrlEncode,Faint,真的OK了。
问题是解决了,留下2个疑点:
- 2个字和3个字到底有什么区别
- HttpServerUtility和HttpUtility在调用机制上有什么区别(MSDN上只是说HttpServerUtility是提供用于处理 Web 请求的 Helper 方法,而HttpUtility提供用于在处理 Web 请求时编码和解码 URL 的方法。本人实在是不甚理解)
这两个问题先记下,留待有空研究,也希望高手不吝赐教!