ホームページ >ウェブフロントエンド >jsチュートリアル >.ashx files_jquery に投稿された中国語の文字化けの問題に対する jquery の解決策

.ashx files_jquery に投稿された中国語の文字化けの問題に対する jquery の解決策

WBOY
WBOYオリジナル
2016-05-16 18:09:051352ブラウズ

1. 私の環境: SP1 パッチが適用されていない vs2005 では、Web アプリケーションを作成できません。Web サイトのみです。

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")},
成功: 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 を変更すると、Web サイトのコンパイルと実行が非常に遅くなります。

参考記事:

http://www.jb51.net/article/26658.htm


http://www.jb51.net/article /26659.htm
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。