ASP.NETのRequest.Form中国語の文字化けしの解決方法

1397 ワード

背景は2つのウェブサイトの通信に関し、ウェブサイトAには1ページaがあり、フォームを提出する方式で、ウェブサイトBのページbに値を伝える.サイトAはUTF-8で統一され、サイトBはGB 2312で統一されている.
web.configでのエンコードの設定
サイトA:
サイトB:
解決する
ネット検索の結果は、Webを修正したにほかならない.configファイルのrequestEncoding、responseEncodingなど、私にとっては、くだらない考えです.加えて、ネットが狂ったようにコピーしたり、貼り付けたり、実行可能性を検証していないなどの行為は、ずっと私に指摘されていて、直接検索結果が千編一律になって、見つけたのはすべてそのいくつかの文章で、最も怒っているのはその中の内容が間違っていることです.だから私はずっと堅持して、出会った問題、確かに実行可能性を検証して、やっとブログに貼って、人を誤らないようにします.(あまり遠くまで話さないでほしい)
では、自分で頭を働かせて、少し整理して、実はこの過程はとても簡単で、1つのUTF-8のページがGB 2312のページにデータを送信して、符号化が異なるため、文字化が正常に現れて、解決方法は自然に統一符号化です.
ウェブページの符号化は、1つは要求データ(requestEncoding)を受信する符号化であり、1つは応答(responseEncoding)を送信する符号化である.aページ送信応答の符号化,bページ受信要求の符号化が一致すれば,乱符号化問題を解決できる.
コードは1つだけ、aページPage_LoadメソッドにResponseを加える.ContentEncoding = Encoding.GetEncoding("gb2312"); できます.
 
  
// a gb2312, b
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentEncoding = Encoding.GetEncoding("gb2312");
}

逆にbページ受信要求の符号化とaページ送信応答の一致を設定してはいけないという意見があるかもしれません.試してみましたが、だめです.コードを見てください.その原理を知っていたら、教えてください.感謝に堪えません.
 
  
// b utf-8, a , , ??
protected void Page_Load(object sender, EventArgs e)
{
Request.ContentEncoding = Encoding.GetEncoding("utf-8");
}