<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
中文問題
一、 JSP頁面亂碼(中文顯示爲問號)
現象:JSP頁面生成的中文數據在瀏覽器端顯示爲亂碼,但是靜態HTML代碼中文則顯示正常。
原因:TOMCAT5。0中JSP頁面的默認編碼方式是ISO-8859-1,在動態生成的HTML代碼時按照ISO-8859-1(西歐字符)編碼,所以顯示中文時全部爲問號。
解決方法:在所有的JSP頁面里加上
<%@ PAGE CONTENTTYPE=”TEXT/HTML;CHARSET=GB2312”>
TOMCAT5.0在解析JSP頁面的時會將編碼方式改爲GB2312,這時中文顯示正常。
二、 INCLUDE進來的JSP頁面的中文亂碼
現象:外層JSP頁面的中文顯示正常,但INCLUDE進來的JSP頁面(內層頁面)的中文顯示亂碼。
原因:在外層的JSP頁面中用上面<一>中的方法處理之後,外層的JSP頁面正確的按照GB2312的編碼方法解析,但內層(即INCLUDE進來的JSP葉面)還是按照TOMCAT的默認編碼方式ISO-8859-1方式編碼,所以造成內層頁面的中文顯示不正常。
解決方式:同上,在所有的內層JSP頁面里加上
<%@ PAGE CONTENTTYPE=”TEXT/HTML;CHARSET=GB2312”>,中文顯示即可恢復正常。
注:同一個JSP頁面中不能出現兩個
<%@ PAGE CONTENTTYPE=”TEXT/HTML;CHARSET=GB2312”>
三、 用POST方式提交的表單數據中的中文亂碼
現象:用POST方式提交的表單數據出現亂碼。
原因:Tomcat在接收到請求後,並沒有能夠根據request中的信息設置正確的編碼方式,而是採用默認編碼方式ISO-8859-1編碼,所以提交的表單中文數據全部爲問號。
解決:可以添加一個設置字符集的過濾器,將request中的編碼方式改爲GB2312,TOMCAT就
能正確的將POST方式提交的數據編碼。過濾器的內容如下:
package filters; |
編好了過濾器之後,還要在TOMCAT中配置過濾器。
打開WEB-INF目錄下的web.xml文件,添加下面的內容:
<filter> |
四、 在JAVASERVLET中輸出的中文亂碼
現象:在JAVASERVLET中用PRINTWRITER輸出的中文亂碼.,瀏覽器接收的HTML數據的編碼方式爲ISO-8859-1(西歐字符),這時如果在瀏覽器端手動的將頁面的編碼方式改爲GB2312或GBK則頁面的中文顯示正常。
原因:TOMCAT5。0頁面的默認編碼方式是ISO-8859-1,瀏覽器在收到由JSP頁面生成的HTML數據時也會將HTML的數據的編碼方式設爲ISO-8859-1,所以造成頁面上的中文字符顯示爲亂碼。
解決方法:
如下面這段代碼:
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.write(“錯誤!可能是由於信息已過期!!”);
out.println("</html>");
首先輸出是要將response reset,這個我也不知道什麼原因,reset後在按照下面的方式處理。
然後要告訴瀏覽器該頁面要以什麼方式編碼,添加。
response.setContentType("text/html;charset=GB2312");
告訴瀏覽器HTML數據的編碼是GB2312,再將輸出的每一句中文改爲以ISO-8859-1編碼方式編碼,改完後整個代碼如下:
response.reset();
response.setContentType("text/html;charset=GB2312");
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.write(new String("錯誤!可能是由於信息已過期!!".getBytes(),"ISO-8859-1"));
out.println("</html>");
這時輸出的中文就能正確的顯示了。
五. 在資源文件中的中文數據輸出到JSP頁面上爲亂碼
現象:用<BEAN:WRITE>標籤在JSP頁面上輸出預先已編入資源文件的中文信息時顯示爲亂碼。
原因:編入資源文件的信息如果不是西歐字符就必須用NATIVE2ASCII工具將其編碼方式改爲ASCII編碼方式。
解決方法:NATIVE2ASCII是JDK自帶的工具,在 你的JDK目錄/BIN 目錄下。其使用方法如下
APP.RES 是正常的可看的中文資源文件
APPLICATIONRESOURCES.PROPERTIES要生成的能正常顯示的資源文件
NATIVE2ASCII APP.RES APPLICATIONRESOURCES.PROPERTIES
轉換完畢後,使用<BEAN:WRITE>標籤輸出的中文信息就能正確的顯示了。