1. 내 환경: SP1 패치가 없는 vs2005에서는 웹 응용 프로그램을 만들 수 없으며 jquery 버전 1.5.1
2. web.config의 관련 구성
3. jquery의 Post 데이터 작성 방법
$(document).ready(function (){
$("#btnSend").click(function(){
$ .ajax( {
유형: "POST",
url: "PrecisionAHandle.ashx",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
데이터: { "StudentId": $("#LblStudentId").attr("innerText"),"StudentName": $("#LblStudentName").attr("innerText"),"StudentAge": $("#txtStudentAge "). attr("value")},
success: function(html){
$("#TabContainer").html(html);
}
});
});
여기서 StudentName은 중국어입니다.
4. .ashx 파일에서 매개변수를 받는 방법
string strStudentName = context. ["StudentName"];
참고: contentType: "application/x-www-form-urlencoded; charset=UTF-8"이 없으면 context.Request.Params["StudentName"]이 깨집니다.
.ashx에서 context.Request.ContentEncoding을 추적하면 jquery가 게시한 데이터가 gb2312 인코딩을 사용하는 것을 알 수 있습니다. 아마도 context.Request는 데이터 수신 시 기본적으로 디코딩에 utf-8을 사용하지만 jquery는 utf-8을 사용하는 것 같습니다. Post 데이터의 데이터를 디코딩하기 위해 utf-8이 사용되지 않아 .ashx의 context.Request.Params["StudentName"]이 잘못된 문자로 표시되었습니다.
이상한 현상:
현상 1: contentType을 추가하지 않고: "application/x-www-form-urlencoded; charset=UTF-8", .ashx 파일에서 다음을 사용하면 명령문이 문자열을 올바르게 표시할 수 있습니다.
StreamReader steamRd = new StreamReader(HttpContext. Current.Request.InputStream);
string strPostData = steamRd .ReadToEnd();
strPostData =HttpUtility.UrlDecode(strPostData, Encoding.GetEncoding("utf-8"))
현상 2: web.config에서 해당 구성을
으로 변경한 후, 추가 여부에 관계없이 contentType: " application/x-www-form-urlencoded; charset=UTF-8", 백그라운드에서 .ashx 파일이 수신한 매개변수가 여전히 왜곡되어 있습니다. web.config를 수정한 후 웹 사이트가 매우 느리게 컴파일되고 매우 느리게 실행됩니다.
참고기사 :
http://www.jb51.net/article/26658.htm
http://www.jb51.net/article /26659.htm