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 ;
}