顯示具有 encode 標籤的文章。 顯示所有文章
顯示具有 encode 標籤的文章。 顯示所有文章

2023年10月12日 星期四

Get & Post - 網頁傳遞參數的方式 - 1>編碼 & 解碼處理 2>序列化 & 反序列化

目的: 網頁傳遞參數的方式 - Get & Post -

處理說明:
一.編碼 & 解碼處理
1>在網頁上提交內容時,可以將內容作為參數傳遞透過GET或POST請求方式到後端。
這些有中文或特殊符號的參數(非ASCII碼)會自動進行編碼,以便它們可以在網絡上進行傳輸。
2>中文字符會以UTF8轉成16進制去做編碼,
     若遇特殊情況(&#)就沒額外處理,則導致參數無法正確傳輸或解析
--> 透過params可以將中文和符號進行編碼,
      但是&# (代表Unicode編碼開頭) 的組合是無法進行編碼,會有錯誤

二.序列化  & 反序列化
序列化:將物件狀態轉換為可傳輸格式
反序列化:將資料流轉換成物件



一.編碼 & 解碼處理

[HttpPost]
public string send()
{
     HttpContext c = HttpContext.Current;
     NameValueCollection nvc =                                                        
     c.Request.Form;               
     string english_tf = nvc["english_tf"];
     string chinese_tf = nvc["chinese_tf"];
     string text = english_tf + " ; " + chinese_tf;
     return text;
}

[HttpGet]
public string send()
{
    NameValueCollection nvc = 
    c.Request.QueryString;
    string english_tf = nvc["english_tf"];
    string chinese_tf =nvc["chinese_tf "];
    string text = english_tf + " ; " + chinese_tf;
    return text;
}


解決方法:
    1>前端先編碼,再送至後端(encodeURIComponent)
    2>後端先解碼,再取得原始欄位值(HttpUtility.UrlDecode)



二.序列化  & 反序列化