1. เมื่อใช้ AJAX เพื่อถ่ายโอนข้อมูลจากหน้าเบื้องหน้าไปยังคอนโทรลเลอร์พื้นหลังรหัสภาษาจีนที่อ่านไม่ออก (เครื่องหมายคำถาม ???) จะปรากฏขึ้น
ฉันมองหาวิธีแก้ปัญหาต่าง ๆ ทางออนไลน์มาก่อน แต่พวกเขาไม่ได้ทำงาน ในที่สุดฉันก็พบว่ามันเป็นปัญหากับเซิร์ฟเวอร์ Tomcat ที่ได้รับข้อมูล
สารละลาย:
วิธีที่ 1: แปลงรหัสพารามิเตอร์เมื่อคอนโทรลเลอร์ได้รับพารามิเตอร์
@responsebody@requestmapping (value = "/getJSondAtAbycityName", ผลิต = "แอปพลิเคชัน/json") สตริงสาธารณะ getjsonbyName (httpservletrequest Request, httpservletResponse Response,@requestparam String City_name) //response.setContentType("Text/html;charset=utf-8 "); //request.setcharacterencoding("utf-8") //solve โพสต์ปัญหาปัญหาที่อ่านไม่ออก city_name = สตริงใหม่ (city_name.getBytes ("ISO-8859-1"), "UTF-8"); System.out.println ("city_name:"+city_name);}วิธีที่ 2:
กำหนดค่าไฟล์ service.xml ในไดเรกทอรี Tomcat
tomcat7/conf/server.xml
เพิ่มแอตทริบิวต์การเข้ารหัสของ uriencoding = "UTF-8" ลงในรหัสบรรทัดนี้
<ตัวเชื่อมต่อพอร์ต = "8080" โปรโตคอล = "http /1.1" การเชื่อมต่อ ณ เวลา = "20000" redirectport = "8443" uriencoding = "utf-8" />
การวิเคราะห์สาเหตุ:
ในความเป็นจริงเหตุผลของปัญหาที่อ่านไม่ออกคือการกำหนดค่า Tomcat เริ่มต้นคำขอที่ได้รับนั้นถูกแปลงด้วย ISO-8859-1 ซึ่งนำไปสู่ปัญหาที่อ่านไม่ออกเป็นภาษาจีน ตราบใดที่รหัสที่อ่านไม่ออกสามารถแปลงรหัสได้อย่างถูกต้องด้วย UTF-8 ปัญหาที่อ่านไม่ออกสามารถแก้ไขได้
2. การส่งข้อมูลทั่วไปจากหน้า JSP ไปยังคอนโทรลเลอร์พื้นหลังวิธีแก้ปัญหาที่อ่านไม่ออกเป็นภาษาจีน
(1) ก่อนอื่นตรวจสอบว่ารูปแบบการเข้ารหัสหน้า JSP เป็น UTF-8
(2) ตั้งค่าการกรองภาษาจีน
<!-การเข้ารหัสภาษาจีน-> <filter> <silter-name> ตัวละคร actliamencodfilter </filter-name> <filter-class> org.springframework.web.filter.characterencodingfilter </filter-class> <int-param> <int-Param> <init-Param> <param-Name> ForceEncoding </param-name> <param-value> True </param-value> </init-param> </filter> <sider-mapping>
(3) ตั้งค่าการแปลงข้อมูล JSON ในไฟล์การกำหนดค่า SpringMVC
<MVC: คำอธิบายประกอบ-ไดรฟ์> <MVC: ตัวแปลงข้อความลงทะเบียน defaults = "true"> <!-เริ่มฟังก์ชั่นคำอธิบายประกอบ MVC ฤดูใบไม้ผลิให้เสร็จสิ้นการทำแผนที่ของคำขอและคำอธิบายประกอบการทำแผนที่การทำแผนที่การทำแผนที่ ISO-88859-1 โดยค่าเริ่มต้น สิ่งนี้ถูกตั้งค่าเป็น UTF-8-> <bean> <property name = "supportedediatypes" value = "text/html; charset = utf-8"/> </ebean> <!-เริ่มการกำหนดค่ารูปแบบ JSON โดยอัตโนมัติเปลี่ยนรูปแบบ json value = "application/json; charset = utf-8"/> </ebean> </mvc: ข้อความคอนเวอร์เตอร์> </mvc: คำอธิบายประกอบ-ไดรฟ์>
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น