表單提交數據亂碼:
對於get方法提交:
找到tomcat安裝路徑下的conf文件夾下面的server.xml,打開將<Connector>添加URIEncoding=”utf-8”,見紅字部分即可。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
此方法只適用於get方法。
對於post方法:
有幾種解決方法,
①在jsp頁中添加如下代碼:request.setCharacterEncoding("utf-8");有的時候需要添加respon.setCharacterEncoding(“utf-8”);
②使用過濾器(比較推薦):
在項目的src文件夾下面添加新建一個類PageEncodingFilter,代碼如下:
中文過濾器的代碼:
package com.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;//如上為所用到的類
//中文過濾器 三個方法,一個屬性
public class PageEncodingFilter implements Filter {
private String encode;
// 初始化,encoding初始值從“web.xml”而來
public void init(FilterConfig arg0) throws ServletException {
this.encode = arg0.getInitParameter("encoding");
}
// 執行過濾
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException{
HttpServletRequest request = (HttpServletRequest) arg0;// 強轉HttpServletRequest
request.setCharacterEncoding(encode);// 參數encode即為 String,切勿再加"雙引號"
arg2.doFilter(arg0, arg1);
}
// 銷毀
public void destroy() {
this.encode = null;
}
}
說明:
//創建步驟:
1.新建 class 實現 接口 Filter (所在包為 帶有“javax.servlet.Filter”,依“MyEclips”版本不同,略有不同);
2.修改代碼如上即可;
3.打開“web.xml”(此文件在webRoot/WEB-INF/web.xml)文件進行 如下配置。
配置代碼:
<!-- 中文過濾器初始化參數設置 -->
<filter>
<filter-name>PageEncodingFilter</filter-name><!--過濾器的名字-->
<filter-class>org.ty.struts.util.PageEncodingFilter</filter-class><!--過濾器文件所在位置-->
<init-param>
<param-name>encoding</param-name><!--初始參數名,指定jsp頁面所用 編碼集-->
<param-value>utf-8</param-value><!--初始參數值 ,指定中文編碼集-->
</init-param>
</filter>
<!-- 過濾器 映射路徑配置 -->
<filter-mapping>
<filter-name>PageEncodingFilter</filter-name>
<url-pattern>/*</url-pattern><!--對所有目錄進行中文過濾 -->
</filter-mapping>
jsp頁面亂碼:
在jsp代碼中添加如下代碼:
<%@ page language="java" import="java.util.*"pageEncoding="utf-8"%>
html中文件
在head頭中添加如下代碼
<head>
<meta http-equiv="content-type"content="text/html; charset=UTF-8">
</head>
摘自 Rookie的專欄