เมื่อเร็ว ๆ นี้การใช้ AJAX เพื่อขอพื้นหลัง SpringMVC เพื่อสอบถามฐานข้อมูล MySQL หน้าจะแสดงรหัสภาษาจีนที่อ่านไม่ออก
กำหนดค่าเริ่มต้นใน mybatis ดังนี้
<select id = "queryContentById" resultType = "java.lang.string" parameterType = "String"> เลือกข้อความจากข่าวที่ id =#{o} </elect>
ฟิลด์ข้อความของข่าวตารางเป็นประเภทหยด
ค่าข้อความที่พบในวิธีนี้จะแสดงในรหัสที่อ่านไม่ออกในคอนโซลเสมอ
หลังจากนั้น Google ค้นหาผลลัพธ์ที่เกี่ยวข้อง = เนื้อหาที่เกี่ยวข้องกับ BLOB โดยไม่ประสบความสำเร็จดังนั้นจึงเปลี่ยนเป็น ResultType = "java.util.map" และและ
ไบต์ [] b = (ไบต์ []) map.get ("text"); string s = สตริงใหม่ (b, "utf-8");
พิมพ์ออกมาและข้อความภาษาจีนจะปรากฏขึ้นตามปกติในเวลานี้ แต่การแสดงหน้ายังคงอ่านไม่ออก
ดังนั้นจึงเป็นคำขอ AJAX ดังนั้นตรวจสอบข้อมูลส่วนหัวการตอบกลับและค้นหาสิ่งต่อไปนี้
เนื้อหาประเภท/html; charset = iso-8859-1
เนื่องจากฐานข้อมูลถูกเข้ารหัสอย่างสม่ำเสมอเป็น UTF-8 ข้อมูลส่วนหัวการตอบกลับจึงถูกแก้ไข
@RequestMapping (value = "/queryContentById", method = requestMethod.get, ผลิต = "ข้อความ/ธรรมดา; charset = utf-8") สาธารณะ @ResponseBody string queryContentById {แผนที่ = (แผนที่) ndrservice.queryContentById (ID); ;}
มาดูปัญหาอื่นกัน
1. คอนโทรลเลอร์ของ SpringMVC ได้รับรหัสที่อ่านไม่ออก:
(1) เพิ่มตัวกรองชุดอักขระลงใน web.xml:
คัดลอกรหัสดังต่อไปนี้: <!-ตัวกรองชุดอักขระสปริง-> <filter> <filter-name> SpringenCodingFilter </filter-name> <filter-class> org.springframework.web.filter.character encodingFilter </ตัวกรอง -คลาส> <int-Param> <param-Name> การเข้ารหัส </param-name> <param-value> UTF-8 </param-value> </itiN-Param> <init-Param> <param-Name> ForceEncoding </param-name> <param-value> true </param-value> </itrient-Param> </filter> <filter-mapping> <filter-name> SpringenCodingFilter </filter-name> <url-p attern>/*</url-pattern> </tilter-mapping>
(2) แก้ไขบน JSP และหน้าอื่น ๆ : charset = utf-8 "และ pageencoding =" utf-8 "
2. คอนโทรลเลอร์อ่านภาษาจีนที่ถูกต้อง แต่หลังจากบันทึกลงในฐานข้อมูลมันจะกลายเป็น "??"
(1) แก้ไขการเชื่อมต่อฐานข้อมูล jdbc_url = jdbc: mysql: // localhost: 3306/mybatistest? useunicode = ใช่ & ตัวละคร = utf8 ("&": หมายถึง "&" ในไฟล์ XML)
(2) แก้ไขชุดอักขระของฐานข้อมูลเป็น UTF-8: เปิด my.ini ในไดเรกทอรีรากของ mysql (mysql5.6 คือ my-efault.ini และคัดลอกเป็น my.ini) และเพิ่มใน ตำแหน่งเฉพาะด้านล่าง (หรือแก้ไข):
การคัดลอกรหัสมีดังนี้: [mySQLD] อักขระ set-server = UTF8 [ไคลเอนต์] เริ่มต้น-ตัวละคร-เซต = UTF8 [MySQL] Default-character-set = UTF8
ไม่มีปัญหากับการตั้งค่าไว้ที่ด้านข้างของฉัน
สรุป:
โดยปกติแล้วปัญหาของรหัสที่อ่านไม่ออกของจีนนั้นเกิดจากการตั้งค่าการเข้ารหัสอักขระที่ไม่ถูกต้อง ในที่สุดปัญหาได้รับการแก้ไข