最近在做一個教務系統,在一處需要通過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 的方法。本人實在是不甚理解)
這兩個問題先記下,留待有空研究,也希望高手不吝賜教!