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 ]); } } نتيجة الإرجاع ؛ }