成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

JSP出現(xiàn)中文亂碼問題解決方法詳解

瀏覽:406日期:2022-06-08 09:45:03

在介紹方法之前我們首先應(yīng)該清楚具體的問題有哪些,筆者在本博客當(dāng)中論述的JSP中文亂碼問題有如下幾個方面:頁面亂碼、參數(shù)亂碼、表單亂碼、源文件亂碼。下面來逐一解決其中的亂碼問題。

一、JSP頁面中文亂碼

在JSP頁面中,中文顯示亂碼有兩種情況:一種是HTML中的中文亂碼,另一種是在JSP中動態(tài)輸出的中文亂碼。

先看一個JSP程序:

<%@ page language="java" import="java.util.*" %><html>	<head>	<title>中文顯示示例</title> 	</head> 	<body>	這是一個中文顯示示例:	<%		String str = "中文";		out.print(str); 	%>	</body></html>

上面這個JSP程序看起來好像是在頁面顯示幾句中文而且標(biāo)題也是中文。運行后在瀏覽器中顯示如圖所示

原因在于沒有在JSP中指定頁面顯示的編碼,消除亂碼的解決方案很簡單上面代碼中page命令修改成如下所示即可

<%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" %><html>	<head>	<title>中文顯示示例</title> 	</head> 	<body>	這是一個中文顯示示例:	<%		String str = "中文";		out.print(str); 	%>	</body></html>

再次運行亂碼消失,原理就是向頁面指定編碼為GB2312,那么頁面就會按照此編碼來顯示,于是亂碼消失。

二、URL傳遞參數(shù)中文亂碼

一般情況下在使用get方法提交表單的時候傳遞的參數(shù)如果是中文的話很可能會出現(xiàn)亂碼。

下面是一個示例程序

<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>	<head> 		<title>URL傳遞參數(shù)中文處理示例</title>	</head>	<%		String param = request.getParameter("param");	%>	<body>		<a href="URLCharset.jsp?param="中文"" rel="external nofollow" >請點擊這個鏈接</a><br>		你提交的參數(shù)為:<%=param%>	</body></html>

上面這個JSP程序的功能就是通過一個URL鏈接向自身傳遞一個參數(shù),這個參數(shù)是中文字符串,這個程序的運行效果如下圖

對于URL傳遞中文參數(shù)亂碼這個問題,其處理方法比較特殊,僅僅轉(zhuǎn)換這個中文字符串或者設(shè)置JSP頁面顯示編碼都是不能解決問題的,需要修改Tomcat服務(wù)器的配置文件才能解決問題。在這里修改Tomcat的conf目錄下的server.xml配置文件,具體改后的代碼如下

<Connector port="8080" protocol="HTTP/1.1" URIEncoding="gb2312"    connectionTimeout="20000"     redirectPort="8443" />

在原來代碼中添加URI編碼設(shè)置URIEncoding=“gb2312”即可,重啟Tomcat服務(wù)器可以得到正確的頁面。其原理也和上面的情況類似,就是向程序指明編碼類型,然后顯示就正常了。

三、表單提交中文亂碼

對于表單的數(shù)據(jù)可以使用request.getParameter(“”)的方法獲取,但是當(dāng)表單中出現(xiàn)中文數(shù)據(jù)的時候就會出現(xiàn)亂碼。

示例代碼如下

<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>	<head> 		<title>Form中文處理示例</title>	</head> 	<body>		<font size="2">				下面是表單內(nèi)容:			<form action="AcceptFormCharset.jsp" method="post">				用戶名:<input type="text" name="userName" size="10"/>				密 碼:<input type="password" name="password" size="10"/>				<input type="submit" value="提交">			</form> 		</font>	</body></html>

在上面的表單當(dāng)中想AcceptFormCharset這個頁面提價兩項數(shù)據(jù),下面是AcceptFormCharset.jsp的內(nèi)容:

<%@ page language="java" import="java.util.*"	contentType="text/html;charset=gb2312"%><html>	<head>		<title>Form中文亂碼</title>	</head>	<body>		<font size="2"> 下面是表單提交以后用request取到的表單數(shù)據(jù):<br>			<%				String userName = request.getParameter("userName");	 			String password = request.getParameter("password");	 			out.println("表單輸入userName的值:" + userName + "<br>");	 			out.println("表單輸入password的值:" + password + "<br>"); 			 %>  		</font>	</body></html>

在上面的程序中,如果表單輸入沒有中文,則可以正常的顯示當(dāng)輸入的數(shù)據(jù)中有中文的時候,得到的結(jié)果如圖所示。

產(chǎn)生種結(jié)果的原因是Tomcat中對于post方法提交的表單采用的默認編碼為ISO-8859-1,而這種編碼格式不支持中文字符。對于這個問題可以采用轉(zhuǎn)換編碼格式的方法來解決,現(xiàn)在對AcceptFromCharset這個頁面改動如下:

<%@ page language="java" import="java.util.*"	contentType="text/html;charset=gb2312"%><html>	<head>		<title>Form中文亂碼</title>	</head>	<body>		<font size="2"> 下面是表單提交以后用request取到的表單數(shù)據(jù):<br>			<%				String userName = request.getParameter("userName");	 			String password = request.getParameter("password");	 			out.println("表單輸入userName的值:" + new String(userName.getBytes("ISO-8859-1"), "gb2312")+ "<br>");	 		 	out.println("表單輸入password的值:" + new String(password.getBytes("ISO-8859-1"), "gb2312")+ "<br>"); 			 %>  		</font>	</body></html>

經(jīng)過這樣的轉(zhuǎn)換編碼以后,所有的中文輸入都可以用request對象正常取出。在上面這個程序中,第四行和第五行是轉(zhuǎn)換編碼格式的關(guān)鍵,先從ISO-8859-1格式的字符串中取出字節(jié)內(nèi)容,然后在用GB2312的編碼格式重新構(gòu)造一個新的字符串。這樣就可以支持中文變淡輸入的正常取值和顯示。改進以后程序運行結(jié)果如下

經(jīng)過上面的更改編碼格式的處理,表單的中文輸入亂碼問題已經(jīng)得到解決。但是如果上面的表單中的輸入項不止是兩個,那么每個輸入項都需要進行編碼轉(zhuǎn)換,那樣就很麻煩了。這是我們就用到了大名鼎鼎的過濾器filter了。關(guān)于這里的內(nèi)容大致的思慮和上面的一樣具體做法請參照筆者的另一篇文章。

四、Eclipse中JSP文件中文亂碼

在Eclipse或者MyEclipse中由于默認的JSP編碼格式為ISO-8859-1,所以當(dāng)打開由其他編輯器編輯的JSP文件時會出現(xiàn)亂碼,如圖所示

對于這個問題我們只需要更改一下Eclipse或者是MyEclipse中對JSP的默認編碼就可以了,修改的地方(我的MyEclipse版本為11)如圖所示

PS

在Eclipse或者MyEclipse當(dāng)中JSP文件默認的編碼為ISO-8859-1,所以在JSP代碼中間如果出現(xiàn)中文就不能保存,例如如下代碼

<%@ page language="java" import="java.util.*" %><html>	<head>	<title>中文顯示示例</title> 	</head> 	<body>	這是一個中文顯示示例:	<%		String str = "中文";		out.print(str); 	%>	</body></html>

修改后在保存的時候會提示如下:

現(xiàn)這個提示的原因在于JSP源文件中有ISO=8859-1編碼無法識別的中文字符,對于這個問題,解決辦法就是在JSP頁面中聲明頁面編碼格式即可。聲明后代碼如下:

<%@ page language="java" import="java.util.*" pageEncoding="GB2312" %><html>	<head>	<title>中文顯示示例</title> 	</head> 	<body>	這是一個中文顯示示例:	<%		String str = "中文";		out.print(str); 	%>	</body></html>

其中第一行中pageEncoding=“gb2312”指明了JSP頁面編碼采用GB2312,這樣就可以正常保存JSP的源文件了。

遇到問題首先分析問題出現(xiàn)的原因,只有知道了原因才能去解決,學(xué)習(xí)分析問題的來源遠比解決這個問題重要的多。

亂碼問題的原因就是程序(Eclipse也好,瀏覽器也罷)的編碼沒有和編程人員的編碼進行統(tǒng)一,(就像你和一個不懂中文的人用中文交流他當(dāng)然不懂了)那么解決這個問題只需要將編程人員想要的編碼告訴程序就可以了,以上解決亂碼問題的種種方法都可以說是一種聲明編碼的過程,也就是說亂碼問題終極解決方案就是:轉(zhuǎn)碼。這里的轉(zhuǎn)碼要么是編程人員手動轉(zhuǎn),要么就是聲明一下讓程序去轉(zhuǎn),換句話說就是:和不懂中文的交流,要么讓他學(xué)中文,要么你就去學(xué)習(xí)他的語言。

生活就是編程,編程就是生活,同之,通之?。。?/p>

到此這篇關(guān)于JSP出現(xiàn)中文亂碼問題解決方法詳解的文章就介紹到這了,更多相關(guān)JSP中文亂碼問題解決方法內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: JSP
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲人成亚洲人成在线观看图片 | 久久精品官网| 久久伊人中文字幕| 国模一区二区三区白浆| 久久久久久夜| 亚洲午夜在线视频| 亚洲精品视频啊美女在线直播| 国产午夜三级一区二区三| 成人精品一区二区三区四区| 欧美日韩一卡二卡三卡| 日本亚洲天堂网| 久久国产精品一区二区三区四区 | 奇米一区二区三区| 国产日韩久久| 亚洲综合激情小说| 国产欧美日韩综合精品二区| 国产日产亚洲精品系列| 成人午夜视频网站| 欧美一区二区三区啪啪| 国内精品第一页| 91麻豆精品91久久久久久清纯 | 国产精品大片免费观看| 久久久久久久久岛国免费| av激情综合网| 日韩一卡二卡三卡| 成人激情图片网| 日韩午夜激情免费电影| 丁香激情综合五月| 91精品国产综合久久国产大片| 裸体健美xxxx欧美裸体表演| 91黄色免费观看| 麻豆精品一区二区综合av| 欧美在线观看视频一区二区三区| 青青草97国产精品免费观看| 色婷婷久久综合| 精品一区二区在线看| 7777精品伊人久久久大香线蕉的| 狠狠色2019综合网| 在线成人小视频| 国产精品123区| 精品国产91九色蝌蚪| 风间由美性色一区二区三区| 欧美大度的电影原声| www.在线成人| 欧美极品另类videosde| 国内精品久久久久久久影视蜜臀| 成人欧美一区二区三区视频网页| 1024日韩| 亚洲成人先锋电影| 91成人看片片| 国产精品一区2区| 欧美sm极限捆绑bd| 欧美三区在线| 亚洲美女少妇撒尿| 久久综合久久久| 国产精品综合二区| 日韩美女在线视频| 欧美成人蜜桃| 一区二区三区加勒比av| 日本高清不卡视频| 高清久久久久久| 亚洲精品在线免费播放| 欧美视频成人| 亚洲综合免费观看高清完整版在线 | 欧美日韩一区二区高清| 亚洲欧洲精品一区二区三区| 国产模特精品视频久久久久| 美女脱光内衣内裤视频久久网站| 日韩一区二区在线观看| 欧美激情一区二区三区在线视频| 亚洲综合丁香婷婷六月香| 欧美日韩一卡二卡| 午夜视频一区| 天天影视涩香欲综合网| 欧美二区乱c少妇| 欧美日韩亚洲一区三区| 亚洲一区二区欧美激情| 欧美吻胸吃奶大尺度电影| 成人av在线网站| 亚洲女同女同女同女同女同69| 色婷婷久久99综合精品jk白丝| 成人视屏免费看| 亚洲免费观看高清完整版在线观看熊 | 农村妇女精品| 午夜一区二区三区视频| 日韩色视频在线观看| 99视频+国产日韩欧美| 久久99国产乱子伦精品免费| 久久久青草青青国产亚洲免观| 国产欧美一区二区三区另类精品| 极品少妇xxxx精品少妇偷拍| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲一区自拍| 床上的激情91.| 亚洲无人区一区| 日韩免费高清电影| 亚洲一区二区在| 97久久超碰国产精品电影| 亚洲高清免费在线| 欧美本精品男人aⅴ天堂| 国产精品夜夜夜一区二区三区尤| 国产成人综合在线观看| 亚洲大尺度视频在线观看| 久久这里只有精品6| 久久久久久久久久码影片| 91在线一区二区三区| 午夜av区久久| 国产午夜三级一区二区三| 欧美这里有精品| 国产自产精品| 国产一区二区精品久久| 樱花影视一区二区| 精品久久人人做人人爽| 老司机久久99久久精品播放免费| 午夜欧美精品| 国产精品一卡二| 亚洲成人精品在线观看| 国产日韩精品一区| 欧美精品一二三| 免费亚洲婷婷| 欧美在线视频二区| 国产一区日韩二区欧美三区| 亚洲最大的成人av| 国产日本欧美一区二区| 欧美日韩午夜影院| 欧美专区一区二区三区| 欧美三级第一页| 国产91清纯白嫩初高中在线观看| 视频一区中文字幕| 日韩伦理av电影| 精品奇米国产一区二区三区| 日本黄色一区二区| 在线视频精品| 欧美日韩视频一区二区三区| 丁香六月综合激情| 美女视频黄免费的久久| 亚洲小少妇裸体bbw| 中文字幕在线不卡视频| 日韩视频免费观看高清完整版 | 欧美性受xxxx黑人xyx| 国产日韩综合| 欧美日韩在线精品| av成人免费在线| 国产中文一区二区三区| 香蕉影视欧美成人| 亚洲欧洲精品成人久久奇米网| wwww国产精品欧美| 欧美一区三区二区| 欧美在线小视频| 久久福利电影| 国产精品永久| 99视频+国产日韩欧美| 国模精品娜娜一二三区| 99re热视频精品| 国产精品911| 精品亚洲免费视频| 免费在线观看日韩欧美| 亚洲成人av电影| 亚洲蜜桃精久久久久久久| 中文字幕的久久| 久久亚洲精品小早川怜子| 日韩一区二区三区高清免费看看 | 亚洲精品国产a| 亚洲免费观看高清完整版在线观看熊 | 国产一区视频在线看| 久久精工是国产品牌吗| 欧美性猛交xxxx黑人交| 久久精品首页| 久久激情中文| 噜噜噜91成人网| 久久亚洲精选| 色婷婷综合久久| 日本国产一区二区| 在线看国产一区二区| 色综合av在线| 91官网在线免费观看| 一本久道久久久| 亚洲在线播放电影| 亚洲免费在线| 美女被久久久| 日本电影欧美片| 欧美网站一区二区| 欧美美女喷水视频| 久久久久久久久久码影片| 一本色道久久综合亚洲精品按摩| 色视频成人在线观看免| 日本高清不卡视频| 欧美精选在线播放| 日韩一区二区三区视频| 精品久久久久久久久久久久久久久久久 | 奇米精品一区二区三区在线观看| 日韩二区三区四区| 国产一区欧美日韩| 成人激情视频网站| 欧美a级片一区| 亚洲国产婷婷香蕉久久久久久99| 亚洲人成网站在线观看播放| 亚洲永久免费| 精品1区2区3区| 日韩精品中文字幕在线一区|