电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JSP出現中文亂碼問題解決方法詳解

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

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

一、JSP頁面中文亂碼

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

先看一個JSP程序:

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

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

原因在于沒有在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傳遞參數中文亂碼

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

下面是一個示例程序

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

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

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

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

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

三、表單提交中文亂碼

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

示例代碼如下

<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>	<head> 		<title>Form中文處理示例</title>	</head> 	<body>		<font size="2">				下面是表單內容:			<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>

在上面的表單當中想AcceptFormCharset這個頁面提價兩項數據,下面是AcceptFormCharset.jsp的內容:

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

在上面的程序中,如果表單輸入沒有中文,則可以正常的顯示當輸入的數據中有中文的時候,得到的結果如圖所示。

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

<%@ page language="java" import="java.util.*"	contentType="text/html;charset=gb2312"%><html>	<head>		<title>Form中文亂碼</title>	</head>	<body>		<font size="2"> 下面是表單提交以后用request取到的表單數據:<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>

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

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

四、Eclipse中JSP文件中文亂碼

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

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

PS

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

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

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

現這個提示的原因在于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的源文件了。

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

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

生活就是編程,編程就是生活,同之,通之!!!

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

標簽: JSP
相關文章:
主站蜘蛛池模板: 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 预制直埋蒸汽保温管-直埋管道-聚氨酯发泡保温管厂家 - 唐山市吉祥保温工贸有限公司 | 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 济南宣传册设计-画册设计_济南莫都品牌设计公司 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 液压升降货梯_导轨式升降货梯厂家_升降货梯厂家-河南东圣升降设备有限公司 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 模切之家-专注服务模切行业的B2B平台! | 防爆电机_ybx3系列电机_河南省南洋防爆电机有限公司 | 拉曼光谱仪_便携式|激光|显微共焦拉曼光谱仪-北京卓立汉光仪器有限公司 | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 长春网站建设,五合一网站设计制作,免费优化推广-长春网站建设 | 广域铭岛Geega(际嘉)工业互联网平台-以数字科技引领行业跃迁 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 聚合甘油__盐城市飞龙油脂有限公司| 泰安塞纳春天装饰公司【网站】| 柔性输送线|柔性链板|齿形链-上海赫勒输送设备有限公司首页[输送机] | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 阻燃剂-氢氧化镁-氢氧化铝-沥青阻燃剂-合肥皖燃新材料 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 南京泽朗生物科技有限公司 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 南京交通事故律师-专打交通事故的南京律师 | 专业音响设备_舞台音响设备_会议音响工程-首选深圳一禾科技 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 过跨车_过跨电瓶车_过跨转运车_横移电动平车_厂区转运车_无轨转运车 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 首页-浙江橙树网络技术有限公司 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 |