ใน Java Web Project วิธีการแก้ปัญหารหัสภาษาจีนที่อ่านไม่ออกได้ดังนี้
กรณีแรก: การเรียกหน้า JSP เพื่อแสดงรหัสที่เล่นได้ในภาษาจีน <br /> คำอธิบายปัญหา: การโทรหน้า JSP ผ่านเบราว์เซอร์รหัสที่อ่านไม่ออกจะปรากฏในเนื้อหาภาษาจีนที่แสดงในเบราว์เซอร์
วิธีแก้ปัญหา: ก่อนอื่นยืนยันว่าเมื่อ JSP นี้บันทึกเนื้อหาไฟล์ในตัวแก้ไขจะใช้รูปแบบการเข้ารหัสของ UTF-8 จากนั้นเพิ่ม <%@ pageencoding = "UTF-8"%> ถึงจุดเริ่มต้นของหน้า JSP เพื่อแก้ปัญหานี้
กรณีที่สอง: การเรียกหน้า servlet แสดงรหัสที่อ่านไม่ออก
คำอธิบายปัญหา: เมื่อโทร Servlet ผ่านเบราว์เซอร์เนื้อหาที่แสดงใน servlet จะปรากฏเป็นอ่านไม่ออก
วิธีแก้ปัญหา: ก่อนที่ servlet จะใช้วัตถุตอบสนองเพื่อส่งออกให้ดำเนินการตอบสนอง SetContentType ("text/html; charset = utf-8"); ตั้งค่าการเข้ารหัสเนื้อหาเอาต์พุตเป็น UTF-8
กรณีที่สาม: พารามิเตอร์ที่อ่านไม่ออกในแบบฟอร์มโพสต์
คำอธิบายปัญหา: เมื่อพารามิเตอร์ถูกส่งไปยัง JSP หรือ servlet ที่เกี่ยวข้องผ่านองค์ประกอบแบบฟอร์มใน JSP, HTML หรือ servlet พารามิเตอร์ที่ได้รับใน JSP หรือ servlet ที่ได้รับจะแสดงเป็นภาษาจีน
ตัวอย่างเช่น:
ส่งรหัส JSP ดังนี้:
<%@ page language = "java" pageencoding = "utf-8"%> <html> <head> <title> ป้อนแบบฟอร์ม </title> </head> <body> <form id = "inputform" name = "inputform" method = "post" action = "display.jsp"> username: <อินพุต name = "รหัสผ่าน"/> <br/> <อินพุต type = "ส่ง" name = "subment" value = "ส่ง" // </form> </body> </html>
รหัส JSP ที่ได้รับพารามิเตอร์มีดังนี้:
<% @ page language = "java" pageencoding = "utf-8"%> <html> <head> <tilte> รับแบบฟอร์ม </title> </head> <body> <% แทรกคำขอ. setcharacterencoding ("UTF-8"); %> ชื่อผู้ใช้: <%= request.getParameter ("ชื่อผู้ใช้")%> <br/> รหัสผ่าน: <%= request.getParameter ("รหัสผ่าน")%> <br/> </body> </html>วิธีแก้ปัญหา: ก่อนที่จะได้รับพารามิเตอร์ที่ส่งโพสต์ให้ใช้ request.SetchAracterencoding ("UTF-8") เพื่อตั้งค่ารูปแบบเนื้อหาของพารามิเตอร์ที่ได้รับเป็นการเข้ารหัส UTF-8 ดูเนื้อหาแทรกในแบบฟอร์มการรับ แน่นอนว่าเป็นการดีที่สุดที่จะใช้ตัวกรองภาษาจีนสำหรับปัญหาที่อ่านไม่ออกประเภทนี้
กรณีที่สี่: วิธี URI ผ่านพารามิเตอร์ที่อ่านไม่ออก
คำอธิบายปัญหา: เมื่อผ่านพารามิเตอร์โดยใช้แบบฟอร์มคุณสามารถผ่านโพสต์หรือรับ แบบฟอร์มไม่สามารถใช้ได้ นอกจากนี้คุณยังสามารถผ่านพารามิเตอร์โดยใช้วิธีการเชื่อมโยง วิธีการผ่านพารามิเตอร์นี้เป็นหลักผ่านพารามิเตอร์เป็น GET พารามิเตอร์ที่ส่งผ่านในวิธีนี้อาจปรากฏออกมาอ่านไม่ออกเมื่อปรากฏเป็นภาษาจีน
ชอบ:
คัดลอกรหัสดังนี้: <a href = "/webProject/display.jsp? ชื่อผู้ใช้ = Zhang San & Password = 123"> แสดงชื่อผู้ใช้และรหัสผ่าน </a>
วิธีแก้ปัญหา: สาระสำคัญของปัญหาคือวิธีการเข้ารหัสเริ่มต้นของเนื้อหาพารามิเตอร์ที่ส่งผ่านโดยวิธี GET จะถูกถาม ISO8859-1 และใช้การร้องขอ Setcharacterencoding ("UTF-8") ไม่สามารถแก้ปัญหาได้ ในการแก้ปัญหานี้ให้แก้ไขไฟล์การกำหนดค่าของเซิร์ฟเวอร์ Tomcat แก้ไขบรรทัด 43 ของไฟล์ conf/server.xml ในไดเรกทอรี Tomcat:
ก่อนการแก้ไข:
<ตัวเชื่อมต่อพอร์ต = "8080" โปรโตคอล = "http/1.1" maxThreads = "150" connectiontimeout = "200000" redirectport = "8443"/>
เนื้อหาที่ได้รับการแก้ไข:
<connector port = "8080" โปรโตคอล = "http/1.1" maxThreads = "150" connectiontimeout = "200000" redirectport = "8443" uriencoding = "utf-8"/>
สิ่งนี้สามารถแก้ปัญหาที่อ่านไม่ออกประเภทนี้
สถานการณ์ที่ห้า:
คำอธิบายปัญหา: เมื่อใช้ไลบรารีหรือเฟรมเวิร์กบางชั้นเพื่อให้ได้เนื้อหาของหน้าเว็บสากลต้องเขียนไฟล์คุณสมบัติที่สอดคล้องกัน เนื้อหาภาษาจีนในไฟล์คุณสมบัติจะปรากฏอ่านไม่ออกเมื่อแสดง
วิธีแก้ปัญหา: ปัญหาที่อ่านไม่ออกนี้สามารถแก้ไขได้โดยเครื่องมือ Native2ASCII ใน JDK ใช้คำสั่งต่อไปนี้:
คัดลอกรหัสดังต่อไปนี้: Native2ASCII -การเข้ารหัส UTF -8 Display.properties display_zh_cn.properties
เหตุผลสำหรับปัญหาที่อ่านไม่ออกคือคอมไพเลอร์ Java สามารถจัดการไฟล์อักขระที่เข้ารหัสโดย LATIN-1 หรือ Unicode เท่านั้น
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน