เมื่อการแก้ปัญหาเรื่อง encoding utf-8 ที่ไม่เป็นภาษาไทยสักทีวันนี้ผมจะแก้ปัญหานั้นต่อ ถ้าเพื่อนคนใดใช้วิธี ขั้นตอนที่ 1 ไปเรียบร้อยแล้ว
สำหรับการสร้าง web application ด้วย Java ถ้าเน้นหลัก Object Oriented จำต้องพึ่งพา Servlet ฉะนั้นแล้วต้องไป config อะไรกันนิดหน่อย ก่อน
1. สร้าง Java class ขึ้นมา ผมใช้ชื่อว่า UTF8Filter.java
public class UTF8Filter implements Filter { private String encoding; public void init(FilterConfig config) throws ServletException { encoding = config.getInitParameter("requestEncoding"); if (encoding == null) encoding = "UTF-8"; } public void destroy() { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding(encoding); filterChain.doFilter(servletRequest, servletResponse); } }
2. mapping filter นีในไฟล์ web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>PoolsawatJSF</display-name> <filter> <filter-name>CharsetFilter</filter-name> <filter-class>com.tss.poolsawatjsf.UTF8Filter</filter-class> <!-- อ้างพาธ package ที่เก็บไฟล์ UTF8Filter.java --> <init-param> <param-name>requestEncoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
3. save ไฟล์ web.xml แล้ว restart server ซะเท่านี้ก็จะแก้ไข ปัญหาเรื่อง Encoding UTF-8 ได้แล้ว