解決jsp中傳遞引數漢字亂碼問題

2021-06-09 20:35:50 字數 3977 閱讀 8735

解決jsp中傳遞引數漢字亂碼問題

問題描述:

1 表單提交的資料,用request.getparameter(「***」)返回的字串為亂碼或者??

2 直接通過url如http://localhost/a.jsp?name=中國,這樣的get請求在服務端用request. getparameter(「name」)時返回的是亂碼;按tomcat4的做法設定filter也沒有用或者用request.setcharacterencoding("gbk");也不管用

原因:

1 tomcat的j2ee實現對表單提交即post方式提示時處理引數採用預設的iso-8859-1來處理

2 tomcat對get方式提交的請求對query-string 處理時採用了和post方法不一樣的處理方式。(與tomcat4不一樣,所以設定setcharacterencoding(「gbk」))不起作用。

解決辦法:

首先所有的jsp檔案都加上:

2)在你的web.xml裡加入如下幾行:

< filter-name>set character encoding

< filter-class>filters.setcharacterencodingfilter

< init-param>

< param-name>encoding

< param-value>gbk

< /init-param>

< /filter>

< filter-name>set character encoding

< url-pattern>/*

3)完成.

2 get方式的解決辦法

uriencoding=」gbk」

完整的應如下:

2)重啟tomcat,一切ok。

一、jsp頁面顯示亂碼

下面的顯示頁面(display.jsp)就出現亂碼:

< head>

< title>jsp的中文處理

out.print("jsp的中文處理");

%>

< /body>

< /html>

對不同的web伺服器和不同的jdk版本,處理結果就不一樣。原因:伺服器使用的編碼方式不同和瀏覽器對不同的字元顯示結果不同而導致的。解決辦法:在jsp頁面中指定編碼方式(gb2312),即在頁面的第一行加上:<%@ page contenttype="text/html; charset=gb2312"%>,就可以消除亂碼了。完整頁面如下:

< %@ page contenttype="text/html; charset=gb2312"%>

< html>

< head>

< title>jsp的中文處理

out.print("jsp的中文處理");

%>

< /body>

< /html>

二、表單提交中文時出現亂碼

下面是乙個提交頁面(submit.jsp),**如下:

< head>

< title>jsp的中文處理

下面是處理頁面(process.jsp)**:

< %@ page contenttype="text/html; charset=gb2312"%>

< html>

< head>

< title>jsp的中文處理

如果submit.jsp提交英文本元能正確顯示,如果提交中文時就會出現亂碼。原因:瀏覽器預設使用utf-8編碼方式來傳送請求,而utf-8和gb2312編碼方式表示字元時不一樣,這樣就出現了不能識別字元。解決辦法:通過request.secharacterencoding("gb2312")對請求進行統一編碼,就實現了中文的正常顯示。修改後的process.jsp**如下:

< %@ page contenttype="text/html; charset=gb2312"%>

< %

request.secharacterencoding("gb2312");

%>

< html>

< head>

< title>jsp的中文處理

三、資料庫連線出現亂碼

只要涉及中文的地方全部是亂碼,解決辦法:在資料庫的資料庫url中加上useunicode=true&characterencoding=gbk就ok了。

四、資料庫的顯示亂碼

在mysql4.1.0中,varchar型別,text型別就會出現中文亂碼,對於varchar型別把它設為binary屬性就可以解決中文問題,對於text型別就要用乙個編碼轉換類來處理,實現如下:

public class convert

else }

catch(exception e) }

} 把它編譯成class,就可以呼叫convert類的靜態方法isotogb()來轉換編碼。

以上都是我遇到問題時從網上搜的答案,但都沒有解決問題。

我們同學的解決方法是他加入了乙個類如下:

public string gbtounicode(string strin)

catch(exception e)

{} return strout; }

我自己的解決方法是呼叫getparameter時採用的方法是:

1. string name=new string(request.getparameter("uname").getbytes("iso-8859-1"));

2. string name=request.getparameter("uname");

byte b=a.getbytes("iso8859-1");

name=new string(b);

用<%=name%> 即可輸出傳遞過來的中文資訊

注:若還是漢字亂碼,重啟伺服器、換乙個伺服器重啟、重啟eclipse(bug導致的),最後一定行的。

至今我用這些招從來沒有亂碼了。

jsp中request向後台傳遞漢字亂碼

問題 通過如下方式向後台傳遞資料的時候在後台產生亂碼 http localhost 8080 ems listnewsbycouumns.action?kw 實習動態 先是struts自帶的過濾器不管用,我用了乙個filter過濾器,也不管用。專案採用的是s2sh框架。解決辦法 修改tomcat中c...

JSP 漢字亂碼解決方法 摘自

剛開始學習jsp的程式設計師都會遇到這樣乙個問題,就是網頁上的中文無法顯示.總結了以下幾條方法。1 在jsp頁中加入一條語句 page contenttype text html charset gb2312 中文顯示就正常了。2 對於從網頁中的文字框通過string parameter reque...

JSP中解決亂碼

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