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; } }
|