หลังจากที่ Microsoft เปิดตัว .NET และดำเนินการส่งเสริมและเผยแพร่อย่างกว้างขวาง ASP.NET ก็ค่อยๆ เข้าสู่กระแสหลักของการพัฒนาระบบสารสนเทศ แต่ในขณะเดียวกัน ระบบเก่าที่พัฒนาด้วย ASP ก็กำลังเผชิญปัญหาในการบูรณาการ ในเวลานี้ เมื่อ ASP และ ASP.NET ถูกรวมเข้าด้วยกัน ข้อมูล COOKIES ของจีนจะไม่สามารถแบ่งปันให้กันและกันได้ ใช้ ASP.NET ในการเขียน หลังจากอ่านข้อมูลคุกกี้ภาษาจีนโดยใช้ ASP สิ่งที่อ่านเป็นอักขระที่อ่านไม่ออกแทนที่จะเป็นภาษาจีน
ต่อมาหลังจากค้นหาข้อมูลและฝึกฝนอย่างต่อเนื่อง ในที่สุดฉันก็พบสาเหตุของปัญหา สาเหตุที่ข้อมูลคุกกี้ภาษาจีนไม่สามารถอ่านได้อย่างถูกต้องใน ASP ก็คือรูปแบบการเข้ารหัสภาษาจีนนั้นแตกต่างออกไป
แฟ้มการกำหนดค่า Web.config โครงการพัฒนาประกอบด้วยข้อมูลต่อไปนี้:
<!-- Globalization ส่วนนี้ตั้งค่าการตั้งค่าสากลของแอปพลิเคชัน -
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
จะเห็นได้ว่าหากไม่มีการกำหนดค่าพิเศษของโปรเจ็กต์ ข้อมูล COOKIES จีนในระบบจะถูกส่งผ่านวิธีการเข้ารหัส "utf-8" โดยค่าเริ่มต้น และข้อมูลคุกกี้ภาษาจีนใน ASP จะถูกส่งผ่านวิธีการเข้ารหัส "GB2312" ตามค่าเริ่มต้น ดังนั้นข้อมูลคุกกี้ภาษาจีนระหว่าง ASP และ ASP.NET จึงไม่สามารถนำมาใช้ร่วมกันโดยค่าเริ่มต้น แต่สามารถแก้ไขได้โดย วิธีการดังต่อไปนี้:
ใช้วิธีการต่อไปนี้เพื่อเขียนคุกกี้:
'--------------------------------------------- -------- -----------------------
' ชื่อ: WriteCookie (ByVal strCookieName As String, ByVal strKeyName As String, ByVal strKeyValue As String)
'พารามิเตอร์:
'[ByVal] strCookieName - ชื่อคุกกี้
' [ByVal] strKeyName - ชื่อคีย์
'[ByVal] strKeyValue - ค่าคีย์
' กลับ: สตริง
'------------------------------------------------ - ---------------
ฟังก์ชั่นสาธารณะ WriteCookie (ByVal strCookieName As String, ByVal strKeyName As String, ByVal strKeyValue As String) เป็นสตริง
Dim objEnc As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
strKeyValue = System.Web.HttpUtility.UrlEncode(strKeyValue, objEnc)
System.Web.HttpContext.Current.Response.Cookies (strCookieName) (strKeyName) = strKeyValue
ฟังก์ชั่นสิ้นสุด
วิธีการข้างต้นทำให้ ASP สามารถอ่านข้อมูล COOKIES ภาษาจีนที่เขียนโดย ASP.NET ได้อย่างถูกต้อง แต่ในขณะเดียวกัน หากข้อมูล COOKIES ภาษาจีนที่อ่านใน ASP.NET แสดงโดยตรงที่แผนกต้อนรับ ข้อมูลนั้นก็จะแสดงเป็นข้อมูลที่อ่านไม่ออก เนื่องจาก ASP.NET ใช้การเข้ารหัส "utf-8" เพื่อแสดงข้อมูลภาษาจีนในการเข้ารหัส "GB2312" จึงเกิดปัญหาขึ้น คุณสามารถใช้วิธีต่อไปนี้เพื่อแสดงข้อมูลภาษาจีนในหน้าแรกได้อย่างถูกต้อง:
Dim uName As String = System.Web.HttpContext. Current.Server.UrlDecode (System.Web.HttpContext.Current.Request.Cookies (strCookieName) (strKeyName))
Dim objEnc As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
uName = System.Web.HttpUtility.UrlDecode(uName, objEnc)
วิธีการข้างต้นแก้ปัญหาที่ไม่สามารถแชร์ข้อมูล COOKIES ภาษาจีนระหว่าง ASP และ ASP.NET ได้ อย่างไรก็ตาม ฉันสงสัยว่าสามารถแก้ไขได้โดยการปรับเปลี่ยนวิธีการเข้ารหัสในไฟล์ ไฟล์การกำหนดค่า Web.config การเปลี่ยนวิธีการเข้ารหัส "utf-8" เป็นวิธีการเข้ารหัส "GB2312" สามารถแก้ปัญหาข้างต้นได้ คุณสามารถลองและบอกผลลัพธ์ให้ฉันทราบ
ใน ASP.NET โดยทั่วไปเราจะล้างข้อมูล COOKIES ด้วยวิธีการต่อไปนี้:
Sub CleanCookies()
หรี่ฉันเป็นจำนวนเต็ม
คุกกี้ Dim As System.Web.HttpCookie
สำหรับ i = 0 ถึง System.Web.HttpContext.Current.Request.Cookies.Count - 1
คุกกี้ = System.Web.HttpContext.Current.Request.Cookies (i)
System.Web.HttpContext.Current.Response.Cookies (CStr (cookie.Name)) ค่า = ""
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Expires = DateAdd(DateInterval.Day, -1, Now)
ต่อไป
สิ้นสุดย่อย
แต่เมื่อคุณล้างข้อมูล COOKIES ด้วยวิธีการข้างต้นแล้วเข้าสู่ระบบอีกครั้ง ASP จะไม่สามารถอ่าน COOKIES ของ ASP.NET ได้ ไม่ทราบสาเหตุ อย่างไรก็ตาม การเพิ่มคำสั่งต่อไปนี้ในวิธีการล้าง COOKIES ข้างต้น ข้อมูลสามารถแก้ปัญหาการไม่สามารถล้างข้อมูล COOKIES ได้อย่างถูกต้อง คำถาม:
System.Web.HttpContext.Current.Response.Cookies.Clear()
ข้างต้นนี้เป็นการสรุปประสบการณ์การทำงานบางส่วนของฉัน ฉันหวังว่าคุณจะแก้ไขฉัน!