JSP中文亂碼問題

1、很顯然我們使用get或post方法傳送數據時,用的是機器上的默認編碼,在中文系統中使用的是gb2312,那麼我們應該設置request.setCharacterEncoding("UTF-8"),將傳送過來的編碼轉換爲UTF-8的編碼,則在顯示的時候就不會顯示爲亂碼了,
因爲我的eclipse是使用的UTF-8方式顯示的,那麼這樣就能避免亂碼問題。
2、而我們在<%@ page pageEncoding="UTF-8"%>中設置的只是對當前的jsp文件在硬盤中的保存編碼。
3、在我看來當我們沒有指定一個頁面的編碼時默認爲系統默認的編碼,在轉換爲
UTF-8時會發生錯誤。
4、get 方法 是使用的ISO-8859_1 編碼發送的,通過服務器中的URIEncoding="UTF-8" 我們把它轉換爲了UTF-8編碼,但是我們在以UTF-8接受時有些漢字還是會出現問題,有待解決中。。。
5、解決中文亂碼問題最有效的途徑是 :將傳過來的字符以當前默認的編碼編碼爲字節數組,然後將字節數組再解碼爲我們需要的字符;例如:中文字符串 str
可以這樣出來 str = new String(str.getBytes("ISO-8859-1"),"gb2312")。
6、在內存中各種字符都是以byte 的形式存儲的,再輸入設備輸入字符時,將其以平臺默認的字符集將其編碼爲字節,並存儲;而輸出時將根據字符集中的字符輸出,如果我們將一個字符以一種字符集編碼,則輸出時系統將根據這種字符集中對應的字符輸出,這樣我們就能看到字符了,如果字符集中不存在相應的字符則顯示爲亂碼。各種字符集之間的解碼方式不同而且編碼也不相同。
7、所謂的解碼,是將以一種字符集編碼的字節序列,解釋爲以另一種字符集編碼的字節序列。每種字符集中的字符編碼不盡相同。

 


8、JSP頁面中文亂碼終極解決:
   * 因爲在IE6中URI是以ISO8859-1發送的;
   * 在服務器端接受了中文參數後,很難正確的轉換
   * 特別是以URI重寫的方式,以<a>標籤進行頁面的跳轉時,即使你是以UTF-8的字符形式發送的中文字符,在服務端也是無法解析的
   * 解決辦法:
         # 將要使用的中文字符在服務器端使用URLEncoder進行編碼爲UTF-8的形式;
         # 注意在服務器端接受參數的時候我們也無法用URLDecoder進行解碼,因爲此時的編碼是ISO8859-1的,無法解碼爲UTF-8的
         # 只有將參數按照ISO8859-1編碼形式編碼爲字符序列,此時才能將字符序列平臺無關的轉換爲UTF-8

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