close

前陣子,在做護校的案子,因為要跟他們學校的SSO整合

跟他們資訊人員討論後,決定採用登入他們portal後透過url轉址並傳遞參數給我

結果他們的資訊人員忘了對參數編碼,結果雙方系統一直界接不起來

我們業務跟對方行政人員搞到都快瘋了

以這邊說明一下何謂編碼

為什麼要編碼?

為了讓資料能夠在網路上正確傳遞,我們通常會把 Binary 格式的資料先轉成 Text 格式再傳遞資料,而這種轉換的過程就是「編碼(Encode)」,反之就是「解碼(Decode)」。除此之外,我們也會將某些 "文字" 進行編碼,讓原本非 ASCII 的文字能夠以 ASCII 的字元傳遞,這樣做是為了避免文字在網路傳遞的時候會失真,而這種讓非 ASCII 的文字轉換成以 ASCII 的字元的表達方式也通稱做「編碼(Encode)」。

 

在ASP.NET 中的 Server.UrlEncode 採用UTF-8編碼方式進行處理。
而ASP中是按照本地設置編碼方式進行處理。

假設ASP.NET與ASP間傳值溝通,而ASP(預設編碼為big5),則要採用:
smbody="這是一個測試"
在ASP.NET--- HttpUtility.UrlEncode(smbody, Encoding.Default)
Response.Write 輸出: %b3o%acO%a4%40%ad%d3%b4%fa%b8%d5
在ASP --- Server.UrlEncode(smbody)
Response.Write 輸出: %B3o%ACO%A4%40%AD%D3%B4%FA%B8%D5

若ASP(預設編碼為UTF-8),則要採用:
在ASP.NET---HttpUtility.UrlEncode(smbody, Encoding.UTF8) OR Server.UrlEncode(smbody)
Response.Write 輸出: %e9%80%99%e6%98%af%e4%b8%80%e5%80%8b%e6%b8%ac%e8%a9%a6
在ASP --- Server.UrlEncode(smbody)
Response.Write 輸出: %E9%80%99%E6%98%AF%E4%B8%80%E5%80%8B%E6%B8%AC%E8%A9%A6

字串還原 使用
Server.UrlDecode函數(ASP & ASP.NET)
HttpUtility.UrlDecode函數 (ASP.NET)

arrow
arrow
    文章標籤
    Server.UrlEncode UTF-8 編碼
    全站熱搜

    carlpan 發表在 痞客邦 留言(0) 人氣()