2016年11月10日 星期四

[.net] C# URL 加解密等號問題

URL在傳址時,我們是用Server.UrlEncode去加密
Server.UrlEncode 官方說明
https://msdn.microsoft.com/en-us/library/ms525738(v=vs.90).aspx

Server.UrlEncode v.s  HttpUtility.UrlEncode
https://dotblogs.com.tw/mis2000lab/2008/06/11/4268


如果是用Server.UrlEncode,針對URL request 回來會自動decode
但發現使用Server.UrlEncode會有將URL空白轉成+號的情形
這在IIS7之後會有網頁錯誤的問題
請參考
http://blog.darkthread.net/post-2015-07-02-iis7-disallow-plus-in-url-path.aspx

順便筆記一下編碼相關的基本常識
ASCII =>只限英數字
BIG5 =>台灣自己開發出來的中文編碼系統,會有難字及亂碼的問題
UTF8 = > ㄍbase 在 Unicode 上,支援中英文數字,相容ASCII

於是跟同事討論決定轉成ASCII加密轉換成字串( Convert.ToBase64String)
再已Server.UrlEncode傳送

等到解回來時

URL request 會自動將Server.UrlEncode解密
再使用Encoding.Default(使用系統 ANSI 字碼頁的編碼方式) 去做解碼

在此紀錄一下






沒有留言:

張貼留言