中文編碼在 Java Web 開發經常會碰到問題,所以這些設定很常見:
JSP:
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
Tomcat:
URIEncoding="UTF-8"
JAVA_OPT:
-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8
但即使有以上的設定,在 request.getParameter 取表單資料仍可能發生亂碼情況;網路上可以找到使用 getBytes 進行轉碼的寫法,但是在每次取值時才處理轉碼,會讓程式碼很不容易維護,例如將 Tomcat 改成 Jetty 時,可能就有不同處理方式(Jetty 預設為 UTF-8,通常不需要轉碼);
所以,最好的方法就是利用 Filter 進行統一的轉碼處理。
針對這個問題,我們建議使用 Spring Framework 的 CharacterEncodingFilter 解決問題。
這個 Filter 由 spring-web.jar 提供,若採用 Gradle 建置專案,只需要加入一行 dependencies 設定:
runtime 'org.springframework:spring-web:2.5.6'
若採用 Grails 開發 Java Web,則不必略過此問題,因為 Grails 內建的設定就已採用 CharacterEncodingFilter 處理編碼。
開啟這個 Filter,需要在 web.xml 加入:
訂閱:
張貼留言 (Atom)
-
▼
2012
(181)
-
▼
2月
(15)
- DocPad - static web sites generator using Node.js
- 便宜容易上手的迷你遙控直升機
- Node.js on Windows 建議安裝 Cygwin 以相容 unix-like 開發環境
- Eclipse 3.7.2 + Android SDK 4.0.x 開發環境設定小筆記
- 使用 Groovy 的 MarkupBuilder 輸出 XML/HTML/XHTML 原始碼
- 選購嬰兒推車心得筆記 Aprica Karoon 629
- 直達 Java 虛擬機器之 Eclipse 調校優化篇
- 淺談私有 CDN(內容傳遞網路)佈署
- 解決 Gradle Fat Jar 簽章(jarsigner)的問題
- 使用 Gradle 開啟 Jetty 的 AJP 協定 (Ajp13SocketConnector)
- 使用 CharacterEncodingFilter 解決 Java Web 的編碼問題
- mongoskin - a better MongoDB driver for Node.js
- 使用 Jekyll 與 GitHub Pages 架站
- PragPub 適合軟體開發者的免費電子雜誌
- DIY 茂谷柑果汁模型
-
▼
2月
(15)
沒有留言:
張貼留言