หมายเหตุ: ข้อมูลข้อความทั้งหมดที่เก็บไว้ในคอมพิวเตอร์บันทึกอักขระที่เรารู้ (อักขระภาษาจีนหรือภาษาอังกฤษ) ในตารางการเข้ารหัสที่แน่นอน (0, 1, 0, 1) กระบวนการไบนารีจากอักขระไปยังที่เก็บข้อมูลคอมพิวเตอร์กำลังเข้ารหัสและกระบวนการจากการอ่านไบนารีเป็นข้อความเรียกว่าการถอดรหัส มีตารางการเข้ารหัสที่แตกต่างกันมากมายสำหรับการเข้ารหัสอักขระดังนั้นหากรูปแบบการเข้ารหัสและรูปแบบการถอดรหัสไม่ใช่ตารางรหัสเดียวกันรหัสที่อ่านไม่ออกจะปรากฏขึ้น เพื่อหลีกเลี่ยงรหัสที่อ่านไม่ออกคุณต้องใช้ตารางรหัสเดียวกันเมื่อบันทึกและอ่าน
มักจะมีรหัสที่อ่านไม่ออกในการเขียนโปรแกรมเว็บ Java ตอนนี้ให้ฉันอธิบายรายละเอียดเกี่ยวกับวิธีการตั้งค่าเพื่อหลีกเลี่ยงรหัสที่อ่านไม่ออก
1 การเข้ารหัสหน้าเว็บ
เมื่อเขียนหน้าเว็บคุณจะต้องระบุรูปแบบการเข้ารหัสของหน้าเว็บและใช้ <meta http-equiv = "เนื้อหาประเภท" เนื้อหา = "text/html; charset = utf-8"> เพื่อระบุ ในเวลานี้เมื่อเบราว์เซอร์อ่านหรือส่งคำขอข้อมูลจะถูกบันทึกหรือส่งในรูปแบบการเข้ารหัสที่ระบุ ที่นี่มันอยู่ในรูปแบบของ UTF-8
ตัวอย่างตัวอย่างรหัส:
<form action = "/pro1/bb" method = "post"> ชื่อผู้ใช้: <อินพุต type = "text" name = "ชื่อผู้ใช้"> <br> เพศ: male <อินพุต type = "Radio" name = "Gender" value = "Male"> ผู้หญิง <อินพุตประเภท = "Radio" Name = type = "ช่องทำเครื่องหมาย" name = "color" value = "Green"> blue <input type = "ช่องทำเครื่องหมาย" name = "color" value = "Blue"> <br> ประเทศจาก <select name = "Country"> <ตัวเลือกค่า = "จีน"> จีน </ตัวเลือก> <ตัวเลือกค่า = "เรา" value = "รีเซ็ต"> </form>
2 ข้อมูลคำขออ่านแบ็กเอนด์
ใน servlet ของเว็บ Java เพื่อให้ได้ข้อมูลที่ร้องขอข้อมูลไบนารีที่ส่งจะต้องได้รับการถอดรหัสตามตารางรหัสที่เกี่ยวข้องเพื่อให้ได้สตริงที่อ่านได้มนุษย์ที่เกี่ยวข้อง ในตัวอย่างนี้ใช้วิธีการโพสต์ดังนั้นเมื่อประมวลผลคำขอโพสต์คุณจะต้องตั้งค่ารูปแบบการเข้ารหัสก่อนที่จะได้รับพารามิเตอร์การร้องขอภาษาจีนมิฉะนั้นรหัสที่อ่านไม่ออกจะเกิดขึ้น เนื่องจากเซิร์ฟเวอร์ใช้ตารางการเข้ารหัส ISO-8859-1 โดยค่าเริ่มต้นสำหรับการถอดรหัส
แน่นอนถ้าคุณต้องการส่งออกอักขระภาษาจีนในผลลัพธ์คุณต้องใช้การเข้ารหัสอักขระแบบครบวงจร นี่คือ UTF-8 รหัสมีดังนี้
โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {request.setcharacterencoding ("UTF-8"); Response.setContentType ("ข้อความ/html; charset = utf-8"); PrintWriter out = response.getWriter (); String username = request.getParameter ("ชื่อผู้ใช้"); string gender = request.getParameter ("เพศ"); String [] colors = request.getParametervalues ("color"); String Country = request.getParameter ("ประเทศ"); out.println ("<! doctype html>"); out.println ("<head> <title> ทดสอบ servlet </title> </head>"); out.println ("<body>"); out.print ("<h1> ต่อไปนี้เป็นอินพุตของคุณ </h1>"); out.print ("<p>"); out.print ("ชื่อผู้ใช้ของคุณ:"+ชื่อผู้ใช้+"<br>"); out.print ("เพศของคุณ:"+เพศ+"<br>"); out.print ("สีโปรดของคุณ:"); สำหรับ (สตริง cr: สี) {out.print (cr+""); } out.print ("<br>"); out.print ("ประเทศของคุณ:"+ประเทศ+"<br>"); out.print ("</p>"); out.println ("</body>"); out.println ("</html>"); -หมายเหตุ: request.Setcharacterencoding ("UTF-8"); นี่คือสิ่งที่ใช้ได้เฉพาะสำหรับเนื้อหาของเอนทิตีที่ร้องขอ พารามิเตอร์การร้องขอโพสต์จะถูกเก็บไว้ในเอนทิตีคำขอและพารามิเตอร์การร้องขอของเมธอด GET จะถูกวางไว้หลังจาก URL และเริ่มต้นด้วยเครื่องหมายคำถามและ '&' เชื่อมต่อพารามิเตอร์หลายพารามิเตอร์ ดังนั้นหากคุณต้องการรับพารามิเตอร์ของวิธี GET คุณต้องใช้การถอดรหัสด้วยตนเองหรือใช้ตัวกรอง
วิธีการถอดรหัสด้วยตนเองเพื่อความเรียบง่ายเพียงตัวถอดรหัสเพศและในการใช้งานจริงแต่ละพารามิเตอร์จะต้องถอดรหัส: String เพศ = สตริงใหม่ (req.getParameter ("เพศ"). getBytes ("ISO-8859-1"), "UTF-8");
ณ จุดนี้ปรากฏการณ์ของอักขระจีนที่อ่านไม่ออกบนเว็บและฝั่งเซิร์ฟเวอร์สามารถแก้ไขได้อย่างสมบูรณ์แบบ โปรดจำไว้ว่าสิ่งหนึ่ง: อ่านไม่ออกในมือข้างหนึ่งเป็นเพราะการเข้ารหัสและการถอดรหัสใช้ตารางการเข้ารหัสที่แตกต่างกัน คุณต้องใช้ตารางการเข้ารหัสเดียวกันเพื่อแก้ปัญหา
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น