熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

URL的傳遞字符串問題小研究[2]

2013-11-13 10:46:33  來源: .NET編程 

  頁面上都是一致的第一頁面的後台代碼

   第二頁面的後台代碼

   結果是DK+中繼站正確!

  注意一定要前後對應比如在這裡第一頁面中是先編碼的後替代第二頁面中就要先替代再解碼不然就會出錯DK 中繼站

  我在開頭提到遇到了比較多的問題 網上的資料有的說是用%來替代+但是我嘗試了下結果卻是錯誤的 DK 中繼站這是什麼原因呢?是網上說錯了嗎?但是在下面的情況中又很讓我苦笑不得不知道具體是什麼原因

   接上面還是用%來替代+我在一次錯誤的輸入在第一頁面後台輸入了name = ServerUrlEncode(name)第二頁面中解碼是 name = ServerHtmlDecode(name)居然是結果對的DK+中繼站我換了其他的替代字符結果也是正確的

  但是我換了其他編碼和解碼組合ServerHtmlEncode(name)和ServerUrlDecode(name)或者ServerHtmlEncode(name)和ServerHtmlDecode(name)組合結果就不對連中文都不對DK 中繼口

   我采用ServerHtmlEncode(name)和ServerHtmlDecode(name)組合要得到正確的結果必須用像@這樣的特殊字符來替代+當然還有在Webconfig中添加設置設置內容如上

   我在查資料的時候還有提到一種方法不需要在Webconfig中添加設置在aspx文件中添加<meta httpequiv=ContentType content=text/html charset=gb>我嘗試了沒成功

   我還有個疑問是在這裡我是用@的特殊字符來代替+因為在我的字符串中是不可能出現@才這樣做的但是如果我的字符串中可能出現這些特殊字符串我又該如何替代呢?

   我在經歷了這些測試後覺得最安全的方法在URL中傳遞參數時最好還是使用URLDecode()方法在Webconfig中配置上

  配置這個是需要注意你的程序中的字符集是不是也用這個gb來編碼解碼的如果不是就要注意了可能引發的錯誤了我在程序中就遇到了這個問題我的程序中的畫面就是用xml傳遞的我加了這個設置後就不能顯示畫面我找了很長時間才知道是是兩種編碼規則沖突我畫面中設置的UTF被全局變量復制了

  今天理解到了測試時需要很有耐心的在這個問題中正確的方法就是可能就是一兩種但是為了測試錯誤的情況我做了七八種情況比如URLEncodeURLDecode和HtmlEncodeHtmlDecode的組合問題傳遞時和接收時編碼替代解碼的先後順序這些花了很多時間頭都繞暈了本來想把所以的過程都寫出來的但是考慮到篇幅太多了還是就寫這些希望大家能有好的建議

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/14483.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.