jsp與servlet中的中文問題

jsp頁面中一句話解決問題
<%@page contentType="text/html;charset=gb2312" language="java" %>
但是要使客戶提交的中文也行那就再來一句
<%request.setCharacterEncoding(”gb2312”);%>

但是不能解決直接手寫含中文的url連接到頁面,否則傳的參數會亂碼,也可以用String的構造方法試試

servlet是我折騰了好一陣子的
也是一句話
    response.setContentType(”text/html;charset=gb2312”);效果等同jsp中的那句話
不過。。。。小心哦
它一定要加在 PrinterWriter out=response.getWriter();之前
否則你去抓狂吧,當然你還可以用

     String 的構造函數new String(srcString,"destination.encode");如:
     new String( demoString.getBytes(”這裏是源串編碼方式”,”iso-8859-1)
這好像一直是救命稻草 換碼 哈哈這也是世界化的痛苦哦,但對於要求世界化來說真是福音。
     有人說把中文放在  .properties 文件中
      或許我沒做過大項目的緣故,從文件中讀所需的中文似乎不是很方便
      對於軟件的localization來說也許很有用
      就像c++中的資源文件
      還有一個很好的辦法不用每個文件都來句  request.setCharacterEncoding(”gb2312”),那就是filter(我用的tomcat)。寫一個服務器端過濾器就可以將所有的request編碼爲你想要的方式。這種方式同樣可以用於身份驗證,比如驗證訪問這個目錄的用戶是否已登陸,是否有權限,就不用要驗證的頁面都來個<%@ include file=”checker.jsp”%>了,真是好東西。還是放出我搜集的樣例代碼吧:
     

//title: filter for transform encoding method to gb2312
//Note:部署filter包含兩部分:指定類名、filter名及初始化參數;
//                           指定filter的映射及作用範圍(目錄)

package jgwl.base;
import javax.servlet.FilterChain;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.servlet.FilterConfig;
public class myFilter implements Filter{
    protected FilterConfig filterConfig;
    private String targetEncoding="gb2312";
   
    //和一般的servlet一樣可以獲得初始參數
    public void init(FilterConfig config)throws ServletException {
        this.filterConfig=config;
        this.targetEncoding=config.getInitParameter("encoding");
        System.out.println("!!!!request is encoded in  "+targetEncoding);
    }
   
    //過濾功能在此處實現
    public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)
            throws IOException,ServletException{
               //follow line is for debug helping       
              //System.out.println("!!!!request is encoded in ** "+targetEncoding);
        HttpServletRequest request=(HttpServletRequest)req;
        request.setCharacterEncoding(this.targetEncoding);
             //turn the operation right to the next filter
        chain.doFilter(req, res);
    }
   
    public void serFilterConfig(final FilterConfig filterConfig){
        this.filterConfig=filterConfig;
    }
    public void destroy(){
        this.filterConfig=null;
    }
}



//title: filter for transform encoding method to gb2312
//Note:部署filter包含兩部分:指定類名、filter名及初始化參數;
//                           指定filter的映射及作用範圍(目錄)

package jgwl.base;
import javax.servlet.FilterChain;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.servlet.FilterConfig;
public class myFilter implements Filter{
    protected FilterConfig filterConfig;
    private String targetEncoding="gb2312";
   
    //和一般的servlet一樣可以獲得初始參數
    public void init(FilterConfig config)throws ServletException {
        this.filterConfig=config;
        this.targetEncoding=config.getInitParameter("encoding");
        System.out.println("!!!!request is encoded in  "+targetEncoding);
    }
   
    //過濾功能在此處實現
    public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)
            throws IOException,ServletException{
               //follow line is for debug helping       
              //System.out.println("!!!!request is encoded in ** "+targetEncoding);
        HttpServletRequest request=(HttpServletRequest)req;
        request.setCharacterEncoding(this.targetEncoding);
             //turn the operation right to the next filter
        chain.doFilter(req, res);
    }
   
    public void serFilterConfig(final FilterConfig filterConfig){
        this.filterConfig=filterConfig;
    }
    public void destroy(){
        this.filterConfig=null;
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章