dilindungi void Page_Load (pengirim objek , EventArgs e) { Response.ContentEncoding = Pengkodean.GetEncoding( " gb2312 " ); // Request.ContentEncoding = Encoding.GetEncoding("gb2312"); // Pengaturan tidak valid }
Dengan cara ini, kami menggunakan gb2312 untuk setiap respons. Menurut objek requset default asp.net, pengkodeannya adalah utf-8 saat diinisialisasi. Saat kami memasukkan bahasa Mandarin di kotak teks dan mengklik tombol, pengkodean permintaan adalah utf- 8 dan pengkodean responsnya adalah gb2312, sehingga data kotak teks menjadi kacau ketika dikirim kembali (kotak teks bagian Cina menampilkan serangkaian tanda tanya)
penggantian yang dilindungi batal InitializeCulture() { dasar .InitializeCulture(); Permintaan.ContentEncoding = Pengkodean.GetEncoding( " gb2312 " ); }
Solusi 2: Dapatkan string data formulir dan parsing sendiri
Pengkodean pengkodean = Encoding.GetEncoding( " gb2312 " ); // Pilih metode penguraian kode Stream resStream = Request.InputStream; // Formulir yang diterima ditempatkan di sini byte [] konten = byte baru [resStream.Length]; resStream.Read(konten, 0 , konten.Panjang); string postQuery = pengkodean.GetString(konten); // NameValueCollection resDic = HttpUtility.ParseQueryString(postQuery, pengkodean); // Selesaikan masalah pengkodean, secara default masih akan didekode secara otomatis
Metode analisis sederhana diberikan di bawah ini:
/// <ringkasan> /// Parsing string kueri /// </ringkasan> /// <param nama="postQuery"></param> /// <pengembalian></pengembalian> NameValueCollection GetFormParams pribadi ( string postQuery) { Hasil NameValueCollection = NameValueCollection baru (); string [] nameValueList = postQuery.Split( ' & ' ); foreach ( item string dalam nameValueList) { if (item.Berisi( ' = ' )) { string [] nameValue = item.Split( ' = ' ); hasil.Tambahkan(nilainama[ 0 ],nilainama[ 1 ]); } } hasil pengembalian ; }