ในการแก้ไขโค้ดที่อ่านไม่ออกของ JSP คุณต้องเข้าใจสาเหตุของโค้ดที่อ่านไม่ออกของ JSP ก่อน
1. เมื่อตั้งค่าเซิร์ฟเวอร์และติดตั้ง MYSQL คุณจะถูกขอให้เลือกการเข้ารหัส หากการเข้ารหัสนี้ไม่สอดคล้องกับหน้าเว็บของคุณ อาจทำให้หน้า JSP อ่านไม่ออก
2. เมื่อสร้างฐานข้อมูลในระบบเช่น PHPMYADMIN หรือ mysql-front คุณจะถูกขอให้เลือกการเข้ารหัส หากการเข้ารหัสนี้ไม่สอดคล้องกับหน้าเว็บของคุณ ก็อาจทำให้หน้า JSP ที่อ่านไม่ออกได้เช่นกัน
3. เมื่อสร้างตาราง คุณจะถูกขอให้เลือกการเข้ารหัส หากการเข้ารหัสนี้ไม่สอดคล้องกับการเข้ารหัสหน้าเว็บของคุณ ก็อาจทำให้หน้า JSP อ่านไม่ออก
4. คุณสามารถเลือกการเข้ารหัสเมื่อเพิ่มฟิลด์เมื่อสร้างตาราง หากการเข้ารหัสนี้ไม่สอดคล้องกับการเข้ารหัสหน้าเว็บของคุณ ก็อาจทำให้เพจ JSP อ่านไม่ออก
5. การเข้ารหัสหน้า JSP ที่ผู้ใช้ส่งมาไม่สอดคล้องกับการเข้ารหัสหน้า JSP ที่แสดงข้อมูล ซึ่งจะทำให้หน้า JSP อ่านไม่ออกอย่างแน่นอน
ตัวอย่างเช่น เพจ JSP ที่ผู้ใช้ป้อนข้อมูลอยู่ในโค้ด big5 แต่เพจ JSP ที่แสดงอินพุตของผู้ใช้นั้นเป็น gb2312 ซึ่งจะทำให้เพจ JSP อ่านไม่ออก 100%
6. โปรดทราบว่าชุดอักขระไม่ถูกต้อง:
1. ข้อความที่คุณเห็นในบางเว็บไซต์อาจมีการเข้ารหัสหลายแบบ เช่น หากคุณเห็นตัวอักษรจีนดั้งเดิม อาจเป็นการเข้ารหัส big5 อาจเป็นการเข้ารหัส utf-8 หรืออาจเป็นการเข้ารหัส gb นั่นเอง กล่าวคือ มีตัวอักษรจีนตัวย่อที่เข้ารหัสเป็นภาษาจีนตัวย่อ และยังมีตัวอักษรจีนตัวย่อที่เข้ารหัสเป็นภาษาจีนตัวเต็มด้วย คุณต้องเข้าใจสิ่งนี้
หากคุณกำลังสร้างหน้าเว็บด้วยการเข้ารหัสภาษาจีนแบบง่าย การเข้ารหัสจะถูกตั้งค่าเป็น GB2312 หากผู้เยี่ยมชมจากฮ่องกงและไต้หวันส่งข้อมูลภาษาจีนแบบดั้งเดิม อาจทำให้เกิดรหัสที่อ่านไม่ออก วิธีแก้ไขคือ (1) ตั้งค่าการเข้ารหัสเว็บไซต์เป็น utf-8 เพื่อให้เข้ากันได้กับตัวละครทั้งหมดในโลก (2) หากเว็บไซต์เปิดมาเป็นเวลานานและมีข้อมูลเก่าจำนวนมากและไม่สามารถเปลี่ยนแปลงการตั้งค่าภาษาจีนตัวย่อได้แนะนำให้ตั้งค่าหน้า เข้ารหัสเป็น GBK
ความแตกต่างระหว่าง GBK และ GB2312 คือ GBK สามารถแสดงอักขระได้มากกว่า GB2312 หากต้องการแสดงอักขระดั้งเดิมในโค้ดแบบง่าย คุณสามารถใช้ได้เฉพาะ GBK เท่านั้น
7.การเข้ารหัสที่ระบุในคำสั่งการเชื่อมต่อ JSP ไปยังฐานข้อมูล MYSQL ไม่ถูกต้อง
8. หากหน้า JSP ไม่ระบุการเข้ารหัสสำหรับการส่งข้อมูล จะทำให้เกิดรหัสที่อ่านไม่ออก:
ดังนั้นสาเหตุของรหัสที่อ่านไม่ออกของ JSP จึงไม่มีอะไรมากไปกว่าที่กล่าวมาข้างต้น หลังจากทราบเหตุผลแล้ว การแก้ปัญหา JSP ที่อ่านไม่ออกก็จะง่ายกว่ามาก รหัส ให้เราอธิบายทีละรายการ:
1. หากไม่สามารถเปลี่ยนรหัสสำหรับการติดตั้ง MySQL ได้ เพื่อนหลายคนซื้อโฮสต์เสมือนเพื่อสร้างเว็บไซต์ และไม่มีสิทธิ์เปลี่ยนรหัสการติดตั้งสำหรับ MYSQL เราสามารถข้ามขั้นตอนนี้ได้ เพราะตราบใดที่ขั้นตอนต่อไปนี้ถูกต้อง ปัญหารหัสที่อ่านไม่ออกยังคงสามารถแก้ไขได้
2. แก้ไขการเข้ารหัสฐานข้อมูล หากการเข้ารหัสฐานข้อมูลไม่ถูกต้อง: คุณสามารถดำเนินการคำสั่งต่อไปนี้ใน phpmyadmin: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
คำสั่งข้างต้นคือการตั้งค่าการเข้ารหัสฐานข้อมูลทดสอบเป็น utf8
3. แก้ไขการเข้ารหัสของตาราง: ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
คำสั่งข้างต้นคือการเปลี่ยนการเข้ารหัสของหมวดหมู่ตารางเป็น utf8
4. แก้ไขการเข้ารหัสของฟิลด์:
แก้ไขตาราง `ทดสอบ` เปลี่ยน `dd` `dd` VARCHAR( 45 ) ชุดอักขระ utf8 COLLATE utf8_bin ไม่เป็นโมฆะ
คำสั่งข้างต้นคือการเปลี่ยนการเข้ารหัสฟิลด์ของ dd ในตารางทดสอบเป็น utf8
5. หากสถานการณ์นี้แก้ไขได้ง่าย เพียงตรวจสอบหน้าและแก้ไขชุดอักขระของไฟล์ต้นฉบับ
, //หากถูกต้องก็จะไม่มีปัญหา
6. ในกรณีนี้ คุณยังสามารถแก้ไขชุดอักขระของหน้าได้อีกด้วย
7. ในคำสั่ง JSP เพื่อเชื่อมต่อกับฐานข้อมูล
สตริงส่วนตัว url="jdbc:mysql://localhost/"+DB_NAME+" user="+LOGIN_NAME+"&password="+LOGIN_PASSWORD+"&CharacterEncoding=GBK"; // คีย์ขึ้นอยู่กับ characterEncoding
8. ในกรณีของอักขระที่อ่านไม่ออก เพียงเพิ่ม request.setCharacterEncoding("GBK") ที่จุดเริ่มต้นของหน้า เพียงระบุ
ข้อมูลที่ส่งมา หมายเหตุ: หลังจากแก้ไขตามวิธีการข้างต้น คุณจะแน่ใจได้ว่าคุณได้แทรกข้อมูลใหม่แล้วเท่านั้น ข้อมูลจะไม่ถูกอ่านไม่ออก ตัวอย่างเช่น หากข้อมูลที่ผู้ใช้ส่งคือ BIG5 แต่คุณต้องการใช้วิธีการด้านบนเพื่อเปลี่ยนให้แสดงอย่างถูกต้องบนหน้าเว็บ GB2312 ก็เป็นไปไม่ได้ การแปลงสามารถแก้ไขได้โดยการเขียนโปรแกรมอื่นโปรด WEB745 .com บทความอื่น ๆ ที่เกี่ยวข้อง
สรุป: ขั้นแรก คุณต้องพิจารณาว่าอักขระที่อ่านไม่ออกของ JSP นั้นอ่านไม่ออกหลังจากถูกแทรกลงในฐานข้อมูลหรือไม่ หรือว่าเพจ JSP นั้นอ่านไม่ออกหลังจากส่งไปแล้วหรือไม่ หาก JSP ถูกอ่านไม่ออกหลังจากได้รับข้อมูลจากเพจที่แล้ว จะต้องเป็นว่าชุดอักขระไม่ถูกต้อง แต่ไม่ได้เพิ่ม request.setCharacterEncoding ("GBK")
หากเป็นเพราะฐานข้อมูลโปรดอ้างอิงวิธีการ 2, 3 และ 4 ข้างต้น
อาจเป็นปัญหาการเข้ารหัส ลองเชื่อมต่อกับฐานข้อมูลแบบนี้ดู
jdbc:mysql://localhost:3306/xxxx useUnicode=true&CharacterEncoding=UTF-8
ดูว่าได้ผลหรือไม่