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