中文處理
(1)幾乎所有的WEB容器在其內(nèi)部默認(rèn)的字符編碼格式都是以ISO-8859-1為默認(rèn)值的,同時(shí),幾乎所有的瀏覽器在傳遞參數(shù)時(shí)都是默認(rèn)以UTF-8的方式來傳遞參數(shù)的;(2)我們建議在程序編寫時(shí),如果需要從用戶端接收用戶的可能含有中文的輸入或含有中文的輸出,程序中應(yīng)該采用字符流來處理輸入和輸出,具體來說,應(yīng)用以下面向字符型節(jié)點(diǎn)流類型:
??? 對(duì)文件:FileReader,F(xiàn)ileWrieter
??????? 其字節(jié)型節(jié)點(diǎn)流類型為:FileInputStream,F(xiàn)ileOutputStream
??? 對(duì)內(nèi)存(數(shù)組):CharArrayReader,CharArrayWriter
??????? 其字節(jié)型節(jié)點(diǎn)流類型為:ByteArrayInputStream,ByteArrayOutputStream
??? 對(duì)內(nèi)存(字符串):StringReader,StringWriter
??? 對(duì)管道:PipedReader,PipedWriter
??????? 其字節(jié)型節(jié)點(diǎn)流類型為:PipedInputStream,PipedOutputStream
??? 同時(shí),應(yīng)該用以下面向字符型處理流來處理輸入和輸出:
??? BufferedWriter,BufferedReader
??????? 其字節(jié)型的處理流為:BufferedInputeStream,BufferedOutputStream
??? InputStreamReader,OutputStreamWriter
??? 其字節(jié)型的處理流為:DataInputStream,DataOutputStream
??? 其中InputStreamReader和InputStreamWriter用于將字節(jié)流按照指定的字符編碼集轉(zhuǎn)換到字符流,如:
??? InputStreamReader in = new InputStreamReader(System.in,"GB2312");
??? OutputStreamWriter out = new OutputStreamWriter (System.out,"GB2312");
(3)在編譯Servlet類的源程序時(shí),用-encoding指定編碼為GBK或GB2312,且在向用戶輸出時(shí)的編碼部分用response對(duì)象的setContentType("text/html;charset=GBK");或gb2312來設(shè)置輸出編碼格式,同樣在接收用戶輸入時(shí),我們用request.setCharacterEncoding("GB2312");這樣無論我們的servlet類移植到什么操作系統(tǒng)中,只有客戶端的瀏覽器支持中文顯示,就可以正確顯示;
(4)1、我們要保證JSP向客戶端輸出時(shí)是采用中文編碼方式輸出的,即無論如何我們首先在我們的JSP源代編中加入以下一行:
??? <%@page contentType="text/html; charset=gb2312"%>
??? 2、為了讓JSP能正確獲得傳入的參數(shù),我們?cè)贘SP源文件頭加入下面一句:
??? <%request.setCharacterEncoding("GB2312");%>
??? 3、為了讓JSP編譯器能正確地解碼我們的含有中文字符的JSP文件,我們需要在JSP源文件中指定我們的JSP源文件的編碼格式,具體來說,我們?cè)贘SP源文件頭上加入下面的一句即可:
??? <%@page pageEncoding="GB2312"%>或<%@page pageEncoding="GBK"%>
posted on 2006-09-14 14:24 天涯孤客 閱讀(89) 評(píng)論(0) 編輯 收藏