Setelah Microsoft meluncurkan .NET dan melakukan promosi dan mempopulerkan skala besar, ASP.NET secara bertahap memasuki arus utama pengembangan sistem informasi. Namun pada saat yang sama, sistem lama yang dikembangkan dengan ASP sedang menghadapi integrasi. Saat ini, sistem tersebut menghadapi masalah: ketika ASP dan ASP.NET terintegrasi satu sama lain, informasi COOKIES Cina tidak dapat dibagikan satu sama lain menggunakan ASP.NET untuk menulis Setelah membaca informasi COOKIES berbahasa Mandarin menggunakan ASP, yang dibaca adalah karakter yang kacau, bukan bahasa Mandarin.
Belakangan, setelah mencari informasi dan berlatih terus-menerus, akhirnya saya menemukan akar penyebab masalahnya. Alasan mengapa informasi COOKIES berbahasa Mandarin tidak dapat dibaca dengan benar di ASP adalah karena format pengkodean bahasa Mandarinnya berbeda.
File konfigurasi Web.config proyek pengembangan berisi informasi berikut:
<!-- Globalisasi Bagian ini menetapkan pengaturan globalisasi aplikasi. -->
<globalisasi requestEncoding="utf-8" responEncoding="utf-8" />
Dapat dilihat dari sini bahwa tanpa konfigurasi khusus proyek, informasi COOKIES Cina dalam sistem dikirimkan melalui metode pengkodean "utf-8" secara default. , dan informasi COOKIES Cina di ASP dikirimkan melalui metode pengkodean "GB2312" secara default, sehingga informasi COOKIES Cina antara ASP dan ASP.NET tidak dapat dibagikan satu sama lain secara default, tetapi dapat diselesaikan dengan cara yang sama. metode berikut:
Gunakan metode berikut untuk menulis COOKIE:
'-------------------------------------------------------- -------- --------
' Nama: WriteCookie(ByVal strCookieName Sebagai String, ByVal strKeyName Sebagai String, ByVal strKeyValue Sebagai String)
'Parameter:
'[ByVal] strCookieName - nama cookie
' [ByVal] strKeyName - nama kunci
'[ByVal] strKeyValue - nilai kunci.
' Kembali: Tali
'------------------------------------------------ - --------------
Fungsi Publik WriteCookie(ByVal strCookieName Sebagai String, ByVal strKeyName Sebagai String, ByVal strKeyValue Sebagai String) Sebagai String
Redupkan objek Sebagai System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
strKeyValue = Sistem.Web.HttpUtility.UrlEncode(strKeyValue, objEnc)
Sistem.Web.HttpContext.Saat ini.Response.Cookies(strCookieName)(strKeyName) = strKeyValue
Fungsi Akhir
Metode di atas memungkinkan ASP untuk membaca dengan benar informasi COOKIES Cina yang ditulis oleh ASP.NET, tetapi pada saat yang sama, jika informasi COOKIES Cina yang dibaca di ASP.NET langsung ditampilkan di meja depan, maka akan ditampilkan sebagai kacau Ini karena ASP.NET menggunakan pengkodean "utf-8" untuk menampilkan informasi berbahasa Mandarin dalam pengkodean "GB2312", terjadi masalah. Anda dapat menggunakan metode berikut untuk menampilkan informasi berbahasa Mandarin dengan benar di halaman depan:
Redupkan uName As String = Sistem.Web.HttpContext.Saat ini.Server.UrlDecode(Sistem.Web.HttpContext.Current.Request.Cookies(strCookieName)(strKeyName))
Redupkan objek Sebagai System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
uName = System.Web.HttpUtility.UrlDecode(uName, objEnc)
Metode di atas memecahkan masalah bahwa informasi COOKIES Cina tidak dapat dibagikan antara ASP dan ASP.NET. Namun, saya ingin tahu apakah itu dapat dimodifikasi dengan memodifikasi metode pengkodean di File konfigurasi web.config, mengubah metode pengkodean "utf-8" menjadi metode pengkodean "GB2312" dapat menyelesaikan masalah di atas.
Di ASP.NET kami biasanya menghapus informasi COOKIES melalui metode berikut:
Sub CleanCookies()
Redupkan saya Sebagai Integer
Redupkan cookie Sebagai System.Web.HttpCookie
Untuk i = 0 Ke System.Web.HttpContext.Current.Request.Cookies.Count - 1
cookie = Sistem.Web.HttpContext.Saat ini.Permintaan.Cookie(i)
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Value = ""
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Expires = DateAdd(DateInterval.Day, -1, Now)
Berikutnya
End Sub
Tetapi ketika Anda menghapus informasi COOKIES melalui metode di atas dan masuk lagi, ASP tidak akan dapat membaca COOKIES dari ASP.NET. Alasannya tidak diketahui. Namun, menambahkan pernyataan berikut ke metode pembersihan COOKIES di atas informasi dapat mengatasi masalah tidak dapat menghapus informasi COOKIES dengan benar. Pertanyaan:
System.Web.HttpContext.Current.Response.Cookies.Clear()
Di atas adalah ringkasan dari beberapa pengalaman saya di tempat kerja .Saya harap Anda mengoreksi saya!