教你5種JSP頁面顯示為亂碼的解決方法

2021-08-07 19:36:15 字數 1730 閱讀 6254

教你5種jsp頁面顯示為亂碼的解決方法

jsp程式設計中網頁顯示出現亂碼的情況,基本可以歸為5類: 

1. jsp頁面顯示亂碼。 

2. servlet接收form/request傳遞的引數時顯示為亂碼 

3. jsp接收form/request傳遞的引數時顯示為亂碼 

4. 用時頁面顯示亂碼 

5. 資料庫訪問的時候產生亂碼。 

下面給出全部解決方法:

jspconfiguration 

*.jsp 

true 

gbk 

false   

special property group for jsp configuration jsp example. 

jspconfiguration 

*.html 

true 

gbk 

false   

3. jsp接收form/request傳遞的引數時顯示為亂碼 

當我們按照第二種亂碼的解決方式修改了web.xml並新增了filter之後,有時候並不一定就對亂碼問題高枕無憂了,有時候我們會奇怪的發現sevlet接收form/request傳遞的引數可以正常顯示了,但是jsp頁面接受form/request傳遞的引數卻仍然顯示為亂碼。這是為什麼呢?

對於我遇到的情況而言,我發現是由於我在用form傳送資訊的頁面採用了這樣的html: 

也就是說沒有指定form的method屬性。而問題就發生在此,form的預設mothod屬性為get. 

而get是通過在傳送請求的url後面加?然後加引數和值來傳遞資料的的,編碼格式為ascii.這就要求我們在傳遞的資料中有非ascii字元或是超過了100個字元,那麼你必須使用method="post",否則就會出現亂碼。

所以解決方式為:第二種亂碼的解決方式+在傳送頁面的form中指定method為post. 

4. 用時頁面顯示亂碼的解決方式

此時實際上亂碼的原因和產生其他幾種亂碼的原因不同,它的原因在於我們用eclipse編輯要forward的html或者jsp檔案時,採用的編碼是可以產生中文亂碼的編碼而不是gbk或者gb2312.所以解決方式就是把eclipse編輯器的編碼方式改為gbk或者gb2312.

具體操作方式見:上文紅色字型部分。 

5. 資料庫訪問的時候產生亂碼的解決方式 

當然,在寫資料庫時,也要保正資料庫的編碼與其它一致: 

我們可以在系統盤windows目錄下的my.ini檔案,在檔案中插入一行default-character-set=gbk,但上面說了這麼多,大家也應該明白些了吧,改動太多的預設設定不是我的風格,因此上,這一行還是不要加的好。

但不管怎麼樣,我們還是要建立乙個基於中文編碼的資料庫,當然,用客戶端登入的時候,某些客戶用自動把字型編碼轉換成中文編碼。在這裡,我想說一下在dos下建立中文編碼資料庫的方法:

在進入資料庫的時候,用mysql --default-character-set=gbk -u root -p 這句話進入mysql,然後建立資料庫,如:create database admin;這樣建立起來的資料庫就是基於中文編碼的了。

用連線資料庫的時候,讀出的資料也可能是亂碼,解決這個問題的方法非常簡單,只要在你建立資料庫連線的時候把url設定成下面這個樣子就可以了:url= jdbc:mysql://localhost:3306/my_database?useunicode=true&characterencoding=gbk

最後總結,把各種地方的編碼統一起來,所在的亂碼問題就都解決了。

JSP頁面顯示亂碼

一 jsp頁面顯示亂碼 下面的顯示頁面 display.jsp 就出現亂碼 out.print jsp的中文處理 對不同的web伺服器和不同的jdk版本,處理結果就不一樣。原因 伺服器使用的編碼方式不同和瀏覽器對不同的字元顯示結果不同而導致的。解決辦法 在jsp頁面中指定編碼方式 gb2312 即在...

JSP頁面顯示亂碼解決

一 jsp頁面顯示亂碼 下面的顯示頁面 display.jsp 就出現亂碼 out.print jsp的中文處理 對不同的web伺服器和不同的jdk版本,處理結果就不一樣。原因 伺服器使用的編碼方式不同和瀏覽器對不同的字元顯示結果不同而導致的。解決辦法 在jsp頁面中指定編碼方式 gb2312 即在...

5種jsp頁面跳轉

1.requestdispatcher.forward 是在伺服器端起作用,當使用forward 時,servlet engine傳遞http請求從當前的servlet or jsp到另外乙個servlet,jsp 或普通html檔案,也即你的form提交至a.jsp,在a.jsp用到了forwar...