前幾天在調程序的時候遇到了比較郁悶的問題我用URL從一個頁面傳遞字符串到另一個頁面的時出現了個奇怪的問題我要傳遞的字符串是DK+中繼站可是另一個頁面接收到字符串卻是DK 中繼口加號變成了空格站不能解析出來變成了不能識別的符號口
我上網查找了原因URL中有些字符被轉義比如空格被編碼成加號於是傳的參數明明是加號獲取的值卻成了空格
按照網上的建議我們應該對要傳遞的參數進行編碼處理於是我對傳遞的參數進行了處理但是又衍生了一堆問題出來我當時為了節約時間就沒有仔細研究用了字符串中的Replace()方法在傳送前代替了這兩個字符接收到了再代替回來現在我來具體的展示下這個問題
首先我們先看下我的開始的問題(環境VS) 新建一個網站在其中添加一個頁面一個頁面是Defaulaspx另一個頁面Defaulaspx在第一個頁面中添加一個控件HyperLink後台代碼
在第二個頁面中添加一個Label控件Label後台代碼
結果顯示DK 中繼口
我當時的解決方法用了字符串中的Replace()方法在傳送前代替了這兩個字符接收到了再代替回來
第一個頁面的後台代碼第二個頁面中後台代碼
結果是DK+中繼站正確!
後來我在網上找到這個這樣的設置在Webconfig中設置
這樣的話就不需要替代中文了只需要把+替代中文在這個過程就不會出現問題了
但是這樣的傳遞中文可能還會遇到其他中文字出問題最好是采用下面的方法將中文參數編碼
我采用URLEncode()編碼采用URLEncode()不在Webconfig中設置好像也可以在我的測試中沒有問題但是為了安全我們還是添加上上面的設置
頁面上都是一致的第一頁面的後台代碼第二個頁面中後台代碼
結果是DK+中繼站正確!
後來我在網上找到這個這樣的設置在Webconfig中設置
這樣的話就不需要替代中文了只需要把+替代中文在這個過程就不會出現問題了
但是這樣的傳遞中文可能還會遇到其他中文字出問題最好是采用下面的方法將中文參數編碼
我采用URLEncode()編碼采用URLEncode()不在Webconfig中設置好像也可以在我的測試中沒有問題但是為了安全我們還是添加上上面的設置
[] []
From:http://tw.wingwit.com/Article/program/net/201311/14484.html