บทความนี้จะแนะนำวิธีแก้ปัญหาหน่วยความจำล้นของ ASP ใน ACCESS สาเหตุของปัญหานี้คือปัญหาการเข้ารหัสอักขระ ซึ่งแก้ไขได้โดยใช้ฟังก์ชันการแปลงรหัสสามารถอ้างอิงถึงสิ่งต่อไปนี้
วันนี้ ในขณะที่ทำการบำรุงรักษาเว็บไซต์รายวัน ฉันพบว่าโปรแกรมข้อความของเว็บไซต์ไม่ผ่านการตรวจสอบและกรองอย่างเข้มงวด ส่งผลให้มีข้อมูลขยะเกือบ 100,000 ชิ้น มีข้อมูลสำคัญมากมายอยู่ในนั้น ซึ่งจำเป็นต้องล้างข้อมูลและเพิ่มมาตรการตรวจสอบที่เข้มงวดมากขึ้น
อย่างไรก็ตาม การลบโดยตรงในฐานข้อมูลนั้นไม่เป็นไปตามหลักวิทยาศาสตร์ และข้อมูลสำคัญจำนวนมากจะถูกลบโดยไม่ได้ตั้งใจ
ผ่านข้อความค้นหาที่ไม่ชัดเจน:
คัดลอกรหัสรหัสดังต่อไปนี้:
เลือก * จากคำติชมโดยที่ความคิดเห็นเช่น '%http%'
ผลลัพธ์: "หน่วยความจำไม่เพียงพอ"
หลังจากค้นหาอย่างต่อเนื่องพบสาเหตุหลักของปัญหา:
เมื่อใช้คีย์เวิร์ด LIKE เพื่อสืบค้นสัญลักษณ์ภาษาญี่ปุ่นใน asp จะเกิดข้อผิดพลาด เช่น Chr(-23075) ซึ่งบ่งชี้ว่ามีหน่วยความจำล้น
หากข้อมูลในตารางข้อมูลมีภาษาญี่ปุ่นหรืออักขระจีนตัวย่อพิเศษบางตัว ข้อผิดพลาดหน่วยความจำล้นก็จะเกิดขึ้นเช่นกัน
มีการกล่าวทางออนไลน์ว่าปัญหาข้างต้นได้รับการยืนยันโดยวิศวกรของ Microsoft ที่ Microsoft Power Camp และเป็น BUG ของผลิตภัณฑ์ที่ไม่สามารถแก้ไขได้ วิธีเดียวคือเข้ารหัสข้อมูลฐานข้อมูลทั้งหมดเป็นรูปแบบข้อความ ANSI แล้วจึงบันทึก ถอดรหัสอีกครั้งเมื่อแสดง
ไม่มีวิธีแก้ไข วิธีเดียวคือแปลงฟิลด์และบันทึกลงในฟิลด์ใหม่ตามที่กล่าวไว้ข้างต้น จากนั้นจึงดำเนินการทำความสะอาด เป็นเรื่องยากมากที่จะเผชิญกับข้อมูลที่มากเกินไปนี้
ฟังก์ชัน EncodeString ทำการยกเว้นอักขระ
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น EncodeString (strWords)
ติ่มซำฉันตราบเท่าที่
Dim strEncodeWords
สำหรับ i = 1 ถึง Len(strWords)
strEncodeWords = strEncodeWords & CStr(Asc(กลาง(strWords, i, 1))) & ","
ต่อไป
EncodeString = strEncodeWords
สิ้นสุดฟังก์ชัน
หลังจากหลบหนีด้วยวิธีนี้ ในระหว่างการค้นหาแบบคลุมเครือ ให้หลบหนีคำหลัก
คัดลอกรหัสรหัสดังต่อไปนี้:
ลบ * จากคำติชมโดยที่ Comments_new เช่น '%&EncodeString("http")&%'