JSP動態網頁程式中處理中文亂碼的研究

來源:互聯網
上載者:User
js|程式|動態|網頁|中文|中文亂碼 在jsp中,中文亂碼常會讓人心亂如麻。 


對於 
中文處理的常見對策,在網上經常可見的主要是下面2種: 
<%@ page 
contentType="text/html;charset=gb2312" %> 
或者: 
<% 
String Hi="你好"; 
byte[] 
tmpbyte=Hi.getBytes("ISO8859_1"); 
Hi=new 
String(tmpbyte); 
out.print(Hi); 
%> 

虛擬小龍亭也主要採用了上面2種方法進行了修改,從而變成了1.1版。 
通過簡單總結,樣本中的中文處理髮生於以下幾個地方: 

1 在url附帶中文參數,可以直接讀取。 
例如: 
<%= request.getParameter("showword")%> 


與資料庫有關的各種sql操作 
這裡使用的Access沒有發生問題。 


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種方法同時運用也很不穩定。 

而在resin平台,情況較好。只要在頁面第一行加入: 
<%@ 
page contentType="text/html;charset=gb2312" 
%>即可正確處理中文。 
如果再加編碼則反而不對。 


session中包含的中文 
在jswdk中,奇怪的是如果從form中讀出的值經過編碼則可正確顯示; 
但直接賦予中文值則不行。 
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平台很好,同上,經過測試,只需要在<head>中補上 
<meta 
http-equiv="Content-Type" content="text/html; 
charset=gb2312"> 
而不需要<%@ page 
contentType="text/html;charset=gb2312" %>也能正確顯示中文。 

體會: 
jswdk也許只能用於普通開發,穩定性和其它問題可能不如商業軟體。 
由於jdk1.3版效能要好於jdk1.2.2很多倍,並且對中文的支援也較好,所以應該加以採用。 

作為免費的商業軟體,resin不僅速度快,穩定,自動編譯,可指出出錯行,可在伺服器端支援使用javascript等,而且,至少我覺得對中文的支援很好。 

當然,如果不必做任何處理即可正確顯示中文將是我們所期待的。 

另外,相信在unix/linux/solaris下應該沒有這樣的問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.