關于JSP中文問題的解決方法
更新時間:2006年10月13日 00:00:00 作者:
在jsp中,中文亂碼常會讓人心亂如麻。
對于中文處理的常見對策,在網(wǎng)上經(jīng)??梢姷闹饕窍旅?種:
<%@ page
contentType="text/html;charset=gb2312" %>
或者:
<%
String Hi="你好";
byte[]
tmpbyte=Hi.getBytes("ISO8859_1");
Hi=new
String(tmpbyte);
out.print(Hi);
%>
虛擬小龍亭也主要采用了上面2種方法進行了修改,從而變成了1.1版。
通過簡單總結,示例中的中文處理發(fā)生于以下幾個地方:
1 在url附帶中文參數(shù),可以直接讀取。
例如:
<%= request.getParameter("showword")%>
2 與數(shù)據(jù)庫有關的各種sql操作
這里使用的Access沒有發(fā)生問題。
3 讀取HTML
form表單中遞交的中文值
在jswdk中需要加以編碼,較為簡潔的寫法如:
String name1=new
String(request.getParameter("user_id").getBytes("ISO8859_1"));
另外,在jdk1.3的支持下,不需要加入
<%@
page contentType="text/html;charset=gb2312"
%>
而在jdk1.2.2下面,即使2種方法同時運用也很不穩(wěn)定。
而在resin平臺,情況較好。只要在頁面第一行加入:
<%@
page contentType="text/html;charset=gb2312"
%>
即可正確處理中文。
如果再加編碼則反而不對。
5 session中包含的中文
在jswdk中,奇怪的是如果從form中讀出的值經(jīng)過編碼則可正確顯示;
但直接賦予中文值則不行。
resin平臺很好,同上。
6 對于對變量賦中文值后正確顯示中文。
例如以下程序:
<%@ page contentType="text/html;charset=gb2312"
%>
<html><head></head><body>
<%
String
Hi="你好";
byte[] tmpbyte=Hi.getBytes("ISO8859_1");
Hi=new
String(tmpbyte);
out.print(Hi);
%>
</body></html>
同樣是jswdk1.0.1,以上的表示方法在jdk1.2.2中沒有問題,但在jdk1.3下卻無法顯示。
resin平臺很好,同上,經(jīng)過測試,只需要在<head>中補上
<meta
http-equiv="Content-Type" content="text/html;
charset=gb2312">
而不需要<%@ page
contentType="text/html;charset=gb2312" %>也能正確顯示中文。
體會:
jswdk也許只能用于普通開發(fā),穩(wěn)定性和其它問題可能不如商業(yè)軟件。
由于jdk1.3版性能要好于jdk1.2.2很多倍,并且對中文的支持也較好,所以應該加以采用。
作為免費的商業(yè)軟件,resin不僅速度快,穩(wěn)定,自動編譯,可指出出錯行,可在服務器端支持使用javascript等,而且,至少我覺得對中文的支持很好。
當然,如果不必做任何處理即可正確顯示中文將是我們所期待的。
另外,相信在unix/linux/solaris下應該沒有這樣的問題。
對于中文處理的常見對策,在網(wǎng)上經(jīng)??梢姷闹饕窍旅?種:
<%@ page
contentType="text/html;charset=gb2312" %>
或者:
<%
String Hi="你好";
byte[]
tmpbyte=Hi.getBytes("ISO8859_1");
Hi=new
String(tmpbyte);
out.print(Hi);
%>
虛擬小龍亭也主要采用了上面2種方法進行了修改,從而變成了1.1版。
通過簡單總結,示例中的中文處理發(fā)生于以下幾個地方:
1 在url附帶中文參數(shù),可以直接讀取。
例如:
<%= request.getParameter("showword")%>
2 與數(shù)據(jù)庫有關的各種sql操作
這里使用的Access沒有發(fā)生問題。
3 讀取HTML
form表單中遞交的中文值
在jswdk中需要加以編碼,較為簡潔的寫法如:
String name1=new
String(request.getParameter("user_id").getBytes("ISO8859_1"));
另外,在jdk1.3的支持下,不需要加入
<%@
page contentType="text/html;charset=gb2312"
%>
而在jdk1.2.2下面,即使2種方法同時運用也很不穩(wěn)定。
而在resin平臺,情況較好。只要在頁面第一行加入:
<%@
page contentType="text/html;charset=gb2312"
%>
即可正確處理中文。
如果再加編碼則反而不對。
5 session中包含的中文
在jswdk中,奇怪的是如果從form中讀出的值經(jīng)過編碼則可正確顯示;
但直接賦予中文值則不行。
resin平臺很好,同上。
6 對于對變量賦中文值后正確顯示中文。
例如以下程序:
<%@ page contentType="text/html;charset=gb2312"
%>
<html><head></head><body>
<%
String
Hi="你好";
byte[] tmpbyte=Hi.getBytes("ISO8859_1");
Hi=new
String(tmpbyte);
out.print(Hi);
%>
</body></html>
同樣是jswdk1.0.1,以上的表示方法在jdk1.2.2中沒有問題,但在jdk1.3下卻無法顯示。
resin平臺很好,同上,經(jīng)過測試,只需要在<head>中補上
<meta
http-equiv="Content-Type" content="text/html;
charset=gb2312">
而不需要<%@ page
contentType="text/html;charset=gb2312" %>也能正確顯示中文。
體會:
jswdk也許只能用于普通開發(fā),穩(wěn)定性和其它問題可能不如商業(yè)軟件。
由于jdk1.3版性能要好于jdk1.2.2很多倍,并且對中文的支持也較好,所以應該加以采用。
作為免費的商業(yè)軟件,resin不僅速度快,穩(wěn)定,自動編譯,可指出出錯行,可在服務器端支持使用javascript等,而且,至少我覺得對中文的支持很好。
當然,如果不必做任何處理即可正確顯示中文將是我們所期待的。
另外,相信在unix/linux/solaris下應該沒有這樣的問題。
相關文章
Jsp和PHP共用80端口整合Apache和Tomcat(訪問時無需加端口號)
整合Apache和Tomcat,使得Java工程和PHP工程都能共用80端口,訪問網(wǎng)站時,無需在地址欄中加端口號,具體實現(xiàn)如下,感興趣的朋友可以參考下哈2013-06-06
Struts2.5 利用Ajax將json數(shù)據(jù)傳值到JSP的實例
下面小編就為大家?guī)硪黄猄truts2.5 利用Ajax將json數(shù)據(jù)傳值到JSP的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
JSP內(nèi)置對象:Request和Response的簡單介紹及使用
JSP內(nèi)置對象:Request和Response的簡單介紹及使用,需要的朋友可以參考一下2013-02-02
JSP 中response.setContentType()的作用及參數(shù)
這篇文章主要介紹了JSP 中response.setContentType()的作用及參數(shù) 的相關資料,希望通過本能幫助到大家,讓大家理解使用這部分內(nèi)容,需要的朋友可以參考下2017-09-09

