程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> jsp亂碼總結解決方案

jsp亂碼總結解決方案

編輯:關於JSP

表單提交數據亂碼:
 對於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的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved