JSP中文亂碼問題

這裏介紹兩類中文亂碼問題:

1.myeclipse打開文件亂碼;

2.參數在頁面間傳遞時出現亂碼。


myeclipse打開文件亂碼

    有時候會遇到用文本編輯器打開文件,顯示正常,但是用myeclipse打開就提示錯誤,這是因爲myeclipse默認的編碼方式與當前編碼方式不一致導致的。可以在window -- preferences -- myeclipse --files and editors 中查看修改。但是修改myeclipse 的配置是不靠譜的,因爲無法保證外部文件的編碼格式都是一樣的,所以,最好還是在文件內部指定編碼方式,只需要在jsp文件的最前面加上一行<%@ page contentType="text/html; pageEncoding="gb2312"%>就可以了。如果一個JSP文件引用了其他多個jsp文件,這多個文件可以每個都設置編碼方式而不會衝突,但是同一個文件內只能指定一次編碼方式,多次指定會報錯。


參數在頁面間傳遞時出現亂碼

響應中的亂碼

    參數在頁面間傳遞時出現亂碼可以包含2種情況:1.響應中的亂碼;2.請求中的亂碼。

所謂響應中的亂碼,就是顯示頁面上的亂碼,因爲頁面數據是從服務器一端放入響應(response)中,然後發送給瀏覽器,如果響應中的數據無法被正常解析,就會出現亂碼問題。

    在iso-8859-1,gb2312, utf-8以及任意一種編碼格式下,英文編碼格式都是一樣的,每個字符佔8位,而中文就麻煩了,在gb2312下一個中文佔16位,兩字節,而在utf-8下一個中文要佔24位,三字節。瀏覽器在不知道確定編碼方式的情況下,就會把這些字符從中間截斷,再顯示的時候就亂掉了。所以,想要解決亂碼問題,就是要告訴瀏覽器我們到底使用了什麼樣的編碼方式。

    因爲服務器要先從本地讀取jsp文件,然後經過處理後寫入響應,所以我們首先要知道的就是jsp文件的編碼格式。要在http的響應(response)中添加編碼信息,使用如下方式:<%@ page contentType="text/html;charset=gb2312"%>,用來指定響應的類型和編碼格式,這樣瀏覽器就可以從響應中獲得編碼格式了。

還需要指定當前html的編碼格式,<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />


請求中的亂碼

    通常是post發送的消息解釋爲亂碼。先把form里加上method="POST",讓form提交的時候使用POST方式。發送請求的時候,使用的編碼是iso-8859-1,意味着只有英文是有效字符,所以如果使用默認的方式從請求獲取數據,中文一定會全部變成亂碼。我們要jsp最前面加上一條java語句,設置請求的字符編碼。

<%

    request.setCharacterEncoding("gb2312")

%>


總之,出現亂碼一般都是因爲發送方與接收方的編碼方式不一致導致的,儘量不要使用默認的編碼方式,在文件中顯式指定編碼方式就可以了。尤其是在操作數據庫的時候,必須將編碼類型轉換成與數據庫一致纔可以,否則,數據庫中的內容將爲亂碼。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章