[ASP.NET] UTF–8 串接 Big5

最近因為要串接舊的簽核系統,因為是超久的系統,當初是用ASP,Big5開發的,所以交換資料需要經過轉碼。

最近因為要串接舊的簽核系統,因為是超久的系統,當初是用ASP、Big5開發的,所以交換資料需要經過轉碼。

 

丟資料:

POST資料比較簡單,直接把內容用Big5寫就可以了…Form的資料直接把參數和值用&接起來寫到內容去就可以了。

 

//因為post到asp系統,所以要換編碼到950
Encoding encoding = Encoding.GetEncoding(950);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Config.PostFlowUrl);
request.Method = "POST";
string param = String.Format("E={0}&S={1}&L={2}&N={3}", userID, subject, lid, nid);
byte[] bs = encoding.GetBytes(param);
request.ContentType = "application/x-www-form-urlencoded;charset=big5";
request.ContentLength = bs.Length;
using (Stream reqStream = request.GetRequestStream())
{
    reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse response = request.GetResponse())
{
    StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
    // Read the content.
    string responseFromServer = reader.ReadToEnd();
}

 

接資料:

因為利用Request.QueryString直接取值會被以UTF-8解碼,所以要取得原始的內容來自己轉。

string query = HttpUtility.UrlDecode(Request.Url.Query, System.Text.Encoding.GetEncoding("big5"));

利用Request.Url.Query可以取得尚未解碼的原始字串,再利用RegularExpressions來解析即可。

想要取特定參數但是不會寫pattern的可以參考黑暗大的文章…CODE-剔除特定QueryString參數

 

Dotblogs 的標籤: ,,,