在 Java Web 應用程式中取得 UTF-8 編碼
問題:實作 UTF-8編碼以支援非拉丁文文字和特定字元
環境:
- 開發:Windows XP
- 製作:Debian
- 資料庫:MySQL 5.x
- 瀏覽器:Firefox2、Opera 9.x、 FF3、IE7、Google Chrome
解決方案:
-
配置Tomcat的server.xml:
-
CharsetFilter:
- 強制Java應用程序處理所有請求和響應UTF- 8。
-
將此過濾器加入到web.xml:
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>fi.foo.filters.CharsetFilter</filter-class>
<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>
登入後複製
-
JSP 頁面編碼:
-
指定JSP 頁面的編碼web.xml或在每個頁面上新增以下元標記:
-
JDBC 連線:
- 使用?useEncoding=true&characterEncoding =連線中的UTF-8 URL。
-
MySQL 資料庫與表格:
- 使用預設字元集=utf8建立資料庫與表格COLLATE=utf8_swedish_ci.
-
MySQL 伺服器設定:
- 在設定中character-set=utf8 (Windows) 或my.cnf (Linux).
-
MySQL 過程和函數:
- 明確指定UTF-8 字元集,例如:
建立函數...返回文字字元集utf8
處理GET 要求:
- 預設情況下, URL 採用Latin1 編碼,導致非ASCII 出現問題字元。
- 要解決此問題,請在 server.xml 中將 URL 編碼定義為UTF-8。
- 指示瀏覽器使用元標記和請求標頭讀取 UTF-8 格式的頁面。
GET 請求中的UTF-8 與Latin1:
- POST 請求以UTF-8 編碼
- 對於GET GE ,雖然頁面定義為UTF-8,但某些字元可能仍以Latin1 編碼。這會導致混合編碼,使得Web應用程式很難正確處理請求參數。
參考:
- http://tagunov.tripod.com/i18n/i18n.html
- http://wiki.apache.org/tomcat/Tomcat/UTF-8
- http://java.sun.com/developer/technicalArticles/Intl/HT TPCharset/
- http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html
- http://cagan327.blogspot.com/2006/05 /utf-8-encoding-fix-tomcat-jsp-etc.html
- http://cagan327.blogspot.com/2006 /05/utf-8-encoding-fix-for-mysql-tomcat.html
- http://jeppesn.dk/utf- 8.html
- http://www.nabble .com/request-para metres-mishandle-utf-8-encoding-td18720039.html
- http://www.utoronto.ca/webdocs/HTMLdocs/NewHTML/iso_table.html
- http://www.utoronto.ca/webdocs/HTMLdocs/NewHTML/iso_table.html
http://www.utoronto.ca/webdocs/HTMLdocs/NewHTML/iso_table.html utf8-chartable.de/
以上是如何在 Java Web 應用程式中正確實作 UTF-8 編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!