สถานการณ์ที่เหมาะสม -> สถานการณ์รหัสที่อ่านไม่ออกเมื่อผ่านจาก JSP ไปสู่การกระทำที่นี่นำ GBK เป็นตัวอย่าง
1. สร้างตัวกรองสำหรับการเข้ารหัสการแปลง
ตัวอย่างตำแหน่งไฟล์: src.util.setcharacterencodingfilter.java
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ util;
นำเข้า java.io.ioException;
นำเข้า Javax.servlet.filter;
นำเข้า Javax.servlet.filterchain;
นำเข้า Javax.servlet.filterConfig;
นำเข้า javax.servlet.servletexception;
นำเข้า Javax.servlet.ServletRequest;
นำเข้า Javax.servlet.ServletResponse;
นำเข้า Javax.servlet.unavailableableexception;
-
* ตัวอย่างตัวกรองที่ตั้งค่าการเข้ารหัสอักขระที่จะใช้ในการแยกวิเคราะห์
* คำขอที่เข้ามา
-
ระดับสาธารณะ setCharacterenCodingFilter ใช้ตัวกรอง {
-
* นำตัวกรองนี้ออกจากการให้บริการ
-
โมฆะสาธารณะทำลาย () {
-
-
* เลือกและตั้งค่า (ถ้าระบุ) การเข้ารหัสอักขระที่จะใช้
* ตีความพารามิเตอร์คำขอสำหรับคำขอนี้
-
โมฆะสาธารณะ Dofilter (คำขอ ServletRequest, การตอบสนอง servletResponse,
FilterChain Chain) พ่น IOException, ServleTexception {
request.Setcharacterencoding ("GBK");
// ผ่านการควบคุมไปยังตัวกรองถัดไป
chain.dofilter (คำขอ, การตอบกลับ);
-
โมฆะสาธารณะเริ่มต้น (FilterConfig FilterConfig) พ่น ServleTexception {
-
-
2. แก้ไข web.xml และเพิ่มตัวกรอง 2 ตัวก่อนการแมป FilterDispatcher ของ Struts
การคัดลอกรหัสมีดังนี้:
<? xml version = "1.0" encoding = "utf-8"?>?
<web-app version = "2.5"
xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance"
XSI: schemalocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd ">
<ผู้ฟัง>
<Sistener-class> org.springframework.web.context.contextloaderlistener </listener-class>
</ผู้ฟัง>
<ฟิลเตอร์>
<filter-name> ตั้งค่าการเข้ารหัสอักขระ </filter-name>
<silter-class> util.setcharacterencodingfilter </tilter-class>
</tilter>
<ฟิลเตอร์ทำแผนที่>
<filter-name> ตั้งค่าการเข้ารหัสอักขระ </filter-name>
<url-pattern>/*</url-pattern>
</ตัวกรองการทำแผนที่>
<ฟิลเตอร์>
<stilter-name> struts-cleanup </tilter-name>
<Filter-Class> org.apache.struts2.dispatcher.actioncontextcleanup </tilter-class>
</tilter>
<ฟิลเตอร์ทำแผนที่>
<stilter-name> struts-cleanup </tilter-name>
<url-pattern>/*</url-pattern>
</ตัวกรองการทำแผนที่>
<ฟิลเตอร์>
<stilter-name> struts2 </tilter-name>
<Tilter-class> org.apache.struts2.dispatcher.filterDispatcher </filter-class>
</tilter>
<ฟิลเตอร์ทำแผนที่>
<stilter-name> struts2 </tilter-name>
<url-pattern>/*</url-pattern>
</ตัวกรองการทำแผนที่>
</eb-app>
3. ส่วนหัว JSP ของคุณควรมี
<%@ page language = "java" pageencoding = "gbk"%>
4. แก้ไขการตั้งค่าการเข้ารหัสเริ่มต้นใน struts.xml
การคัดลอกรหัสมีดังนี้:
<struts>
<constant name = "struts.i18n.encoding" value = "gbk"> </stenceft>
-
-
-
</struts>
โดยพื้นฐานแล้วสิ่งนี้สามารถแก้ปัญหาของตัวละครที่เข้ามาได้ส่วนใหญ่อ่านไม่ออก
PS: หากฐานข้อมูลแยกอักขระที่อ่านไม่ออกเช่น MySQL ยืนยันว่าอักขระในฐานข้อมูลของคุณเป็น GBK และสตริงการเชื่อมต่อระบุการเข้ารหัสอักขระ
<property name = "url" value = "jdbc: mysql: // localhost/database? useunicode = true & catreatencoding = gbk"> </porepore>