A. 怎麼解決jsp中文亂碼問題,我要瘋了
1、JSP頁面出現的中英文亂碼:
我們的PageCharset.jsp頁面代碼如下所示:
[html]view plain
<%@pagelanguage="java"import="java.util.*"%>
<html>
<head>
<title>中文顯示示例</title>
</head>
<body>
中文顯示的示例。
<%
out.print("這里是用jsp輸出的中文");
%>
</body>
</html>
當我們在保存我們的文件的時候會出現下面的提示:
整因為在我們的MyEclipse中默認的編碼為ISO-8859-1,而ISO-8859-1不支持中文的編碼,所以jsp頁面代碼如果出現中文就不能保存了。對於這樣的錯誤,我們只要在頁面上加上支持中文的編碼格式就可以了,在jsp頁面中加上pageEncoding=「gb2132」 支持中頁面的編碼格式就可以了。這樣我們就能正常保存我們的jsp源文件了。
2、URL傳遞參數中文亂碼
[html]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>
<html>
<head>
<title>URL傳遞參數中英文處理示例</title>
</head>
<%
Stringparam=request.getParameter("param");
%>
<body>
<ahref="URLCharset.jsp?param='中文'">請單擊這個鏈接</a>
您提交的這個參數為:<%=param%>
</body>
</html>
啟動tomcat運行結果出現url傳遞的中文亂碼:
這里我們需要配置tomcat伺服器文件,才能解決這個問題。具體方法是,在tomcat的conf目錄下找到server.xml配置文件,找到如下代碼
[html]view plain
<spanstyle="font-size:18px"><Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/></span>
在後面添加上編碼方式,URIEncoding="gb2312" 重新啟動tomcat問題就解決了。
3、表單提交中問亂碼
對於表單中提交的數據,可以用request.getPraramter("");方法來獲取,但是當表單中出現中文數據的時候就會出現亂碼。
我們的提交表單的頁面,FormCharset.jsp頁面如下:
[html]view plain
<%@pagelanguage="java"contentType="text/html;charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
<title>Form中文處理示例</title>
</head>
<body>
下面是表單內容:
<formaction="AcceptFormCharset.jsp"method="post">
用戶名:<inputtype="text"name="userName"size="10"/>
<inputtype="submit"value="提交"/>
</form>
</body>
</html>
我們的AcceptFormCharset.jsp頁面:
[html]view plain
<%@pagelanguage="java"contentType="text/html;charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
<title>Form中文處理示例</title>
</head>
<body>
下面是表單提交以後request取到的表單的數據:<br>
<%
out.println("表單輸入的userName值為:"+request.getParameter("userName")+"<br>");
out.println("表單輸入的pasword值為:"+request.getParameter("password")+"<br>");
%>
</body>
</html>
提交表單:
結果如下:
我們看到我們在表單中的中文數據出現了亂碼,為什麼楚翔這種情況呢?是因為我們的tomcat中,對於以post方式提交的表單編碼格式默認為ISO-8859-1的編碼格式,而這種編碼格式是不能編碼中文的,所以就會出現亂碼的現象了。對於這種情況,我們可以對表單中的數據進行處理,在取得表單參數的時候設置編碼方式,我們更改了我們的接受表單數據的頁面如下所示:
[html]view plain
<%
StringuserName=request.getParameter("userName");
StringpassWord=request.getParameter("password");
out.println("表單輸入的userName值為:"+newString(userName.getBytes("ISO-8859-1"),"gb2312")+"<br>");
out.println("表單輸入的pasword值為:"+newString(passWord.getBytes("ISO-8859-1"),"gb2312")+"<br>");
%>
這樣就得到我們想要的效果啦:
4、資料庫操作中文亂碼
我們在建立資料庫的時候,最好是能選擇支持中文編碼格式,最好是能和jsp頁面編碼格式保持一致,這樣就盡可能的減少資料庫操作中文亂碼的問題,最開始的連接資料庫的時候,編寫好資料庫的編碼策略,也就是使用這種形式的URL:jdbc:Oracle:thin:@localhost:1521:TEST;userEnicode=true;characterEncoding=gb2312; 這樣我們選擇的資料庫的編碼和我們的jsp編碼就一致了。
寫入到資料庫的時候,資料庫中中文亂碼:
但是如果我們在最開始的時候沒有對資料庫的編碼進行設置,並且我們的資料庫中已經有大量的數據的話,我們再向資料庫中寫入中文數據,資料庫中的中文顯示為亂碼。在寫入數據的時候出現亂碼,是因為我們在處理表單的時候沒有對字元的編碼設置,對於這種情況,我們在jsp中或servlet中加入:
rquest.setCharacterEncoding("gb2312");//處理表單請求的時候設置編碼。
這樣再看我們的資料庫,插入的中文欄位就不會亂碼了。
從資料庫中讀出中文亂碼:
資料庫中的中文出現亂碼,就是在讀取資料庫的時候進行轉碼,這樣顯示就不會亂碼了。我們整理這樣的一個轉碼函數:
public String encoder(String str) throws UnsupportedEncodingException
{
String result = new String(str.getBytes("ISO-ISO-8859-1)"),"gb2312");
}
5 在myeclipse開發工具中打開中文顯示亂碼
在myeclipse中默認的編碼方式為ISO-8859-1,所以打開有其他編譯器編碼的jsp頁面就會出現亂碼,是因為兩個編譯器保存源文件編碼格式不同,在UltralEdit可以支持中文,但是在Eclipse對jsp文件的保存方式為ISO-8895-1,這種編碼不支持中文,所以就會出現亂碼。
對於這種情況,我們可以更改myeclipse默認的編碼方案,myeclipse->Window->Preferences->General->Content types->Test->JSP
這樣問題就解決啦!
6 Filter批量設置編碼格式
我們對於每一個jsp或servlet我們都要設置編碼格式,效率有些低,我們的servlet的Filter解決了我們的問題。在前篇寫過Filter的解決中文亂碼問題的文章,在這里就不贅述了。http://blog.csdn.NET/lovesummerforever/article/details/9924413
需要強調的一點,開始使用Javamodel1模型的時候,我們在web.xml中配置只需要配置好jsp頁面就可以了,在model2模型中我們使用servlet作為控制器,我們就需要在Filter的配置文件web.xml中配置好servlet的設置,對所有的servlet處理的表單編碼進行設置。
[html]view plain
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
B. jsp 頁面傳遞數據出現中文亂碼
你用記事本打開queryadmin.jsp,看它的編碼是什麼,如果是ansi,就會出現亂碼。改成utf-8後,將文件另存為同名文件即可。如果是utf-8則無視。應該是這個原因
C. JSP文本框輸入中文提交後會亂碼,尋求幫助
在JSP頁面的第一行<%page ...%>裡面添加如下屬性:
pageEncoding="utf-8" contentType="text/html;charset=utf-8"
這樣就可以保證頁面顯示和傳遞的編碼都為utf-8,後台再設置request.setCharacterEncoding("utf-8"),這樣從頁面提取出來的中文就應該不會亂碼了
D. jsp頁面<a>標簽傳中文參數到struts後台亂碼該怎麼解決
java文件讀取的時候有中文就很出現亂碼,通常獲取到的文件中都是「iso8859-1」格式,需要轉換為「UTF-8」格式。
如:String str = new String(str.getByte("iso8859-1"),"UTF-8");進行下強制轉換後在進行讀取即可。
備註:通常格式有GBK、UTf-8、iso8859-1、GB2312,如果上面的強制轉換不成功,依次進行這些格式的嘗試,肯定是可以解決問題的。
E. jsp頁面中a標簽傳值到Servlet中 中文變成亂碼了 是怎麼回事 編碼全是UTF-8
參考——》JSP和Servlet的中文亂碼處理
-
無處不在
-
博客頻道
-
CSDN.NET
超鏈接時出現亂碼(低版本瀏覽器不行IE6)
在Web開發中,挺多的時候都是通過超鏈接去傳遞中文參數的,這也會導致在顯示的時候也會出現亂碼,對於超鏈接來說,它實際上是向伺服器端發送了一個請求,而它發出的請求是屬於get請求,所以對於超鏈接的亂碼來說,它處理亂碼的方式和表單的get請求出現亂碼的方式是一樣的。
客戶端的get請求
對於不同的請求方式,解決亂碼的問題也是不一樣的,對於客戶端的get請求來說,伺服器端處理要想不出現亂碼,解決這個問題稍微復雜一些,需要用到String類型的構造函數,其中的一個構造函數就是用指定的編碼方式去解碼,一般都用「UTF-8」的方式。只要在伺服器端將請求得到的參數重新構造成一個字元串就行了。如下所示:
String
stuname
=
request.getParameter("stuname");
String
str
=
new
String(stuname.getBytes("ISO-8859-1"),"utf-8")
經過構造之後,客戶端輸入中文,且表單時get請求的情況下,str就變成了中文了。如果請求參數比較多,最好將它封裝成一個工具類:
public
class
MyUtil
{
public
static
String
getNewString(String
str)
throws
UnsupportedEncodingException
{
return
new
String(str.getBytes("ISO-8859-1"),"UTF-8");
}
}
String
stuname=
MyUtil.getNewString(request.getParameter("stuname"));
F. 在jsp頁面向後台servlet傳值時 如圖name指為中文時 後台接收到的數據是亂碼的 該怎麼解決這個亂碼問題
在servlet中進行編碼就可以了。
request.setCharacterEncode("utf-8");//或者GBK
String name = request.getParameter("name");
G. jsp怎麼解決中文亂碼的問題
1.通過瀏覽器調用JSP頁面,在客戶端瀏覽器中所有的中文內容出現亂碼;解決方案:替換ISO-8859-1,修改頁面編碼為UTF-8,ujiuye
3.通過瀏覽器調用Servlet,Servlet在瀏覽器中顯示內容出現亂碼;解決方案:在Servlet使用response在輸出內容之前,先執行response....
5.提交頁面表單元素給對應的JSP頁面或者Servelt後,接收方出現表單數據中文值亂碼;解決方案:在接收POST提交的參數之前,使用request.setCharacterEncoding(「UTF-8")設定接收參數的內容使用UTF-8編碼 ,
7用Get方式傳遞參數,中文字元會出現亂碼; 解決方案:Get提交默認是以ISO88591傳遞,如果容器沒有做配置修改,程序則需要手工進行編碼轉換