Page_Load باطلة محمية (مرسل الكائن ، EventArgs e) { Response.ContentEncoding = Encoding.GetEncoding( " gb2312 " ); // Request.ContentEncoding = Encoding.GetEncoding("gb2312"); // الإعداد غير صالح }
بهذه الطريقة، نستخدم gb2312 لكل استجابة وفقًا لكائن الطلب الافتراضي asp.net، يكون التشفير هو utf-8 عند التهيئة. عندما ندخل اللغة الصينية في مربع النص وننقر على زر الزر، يكون ترميز الطلب هو utf-. 8 وترميز الاستجابة هو gb2312، وبالتالي تصبح بيانات مربع النص مشوهة عند إعادتها (يعرض الجزء الصيني من مربع النص سلسلة من علامات الاستفهام)
تجاوز محمي باطلة InitializeCulture () { قاعدة .InitializeCulture(); Request.ContentEncoding = Encoding.GetEncoding( " gb2312 " ); }
الحل 2: احصل على سلسلة بيانات النموذج وقم بتحليلها بنفسك
ترميز التشفير = Encoding.GetEncoding( " gb2312 " ); // حدد طريقة فك التشفير Stream resStream = Request.InputStream; // يتم وضع النماذج المستلمة هنا بايت [] المحتوى = بايت جديد [resStream.Length]؛ resStream.Read(content, 0 , content.Length); string postQuery = encoding.GetString(content); // NameValueCollection resDic = HttpUtility.ParseQueryString(postQuery, encoding); // حل مشكلة التشفير، وسيظل يتم فك التشفير تلقائيًا بشكل افتراضي
طريقة التحليل البسيطة مذكورة أدناه:
/// <الملخص>
/// تحليل سلسلة الاستعلام /// </summary>
/// <param name="postQuery"></param>
/// <returns></returns>
خاص NameValueCollection GetFormParams ( سلسلة استعلام لاحق)
{
NameValueCollection result = new NameValueCollection();
سلسلة [] nameValueList = postQuery.Split( ' & ' );
foreach (عنصر السلسلة في nameValueList)
{
إذا (العنصر. يحتوي على ( ' = ' ))
{
سلسلة [] nameValue = item.Split( ' = ' );
result.Add(nameValue[ 0 ], nameValue[ 1 ]);
}
}
نتيجة الإرجاع ؛
}