如何解決Form表單亂碼問題
2012/11/29 14:57:07
網(wǎng)站程序中的Form表單,是重要的組成內(nèi)容之一,很多時(shí)候,F(xiàn)orm表單會(huì)出現(xiàn)亂碼的現(xiàn)象,會(huì)給網(wǎng)站造成一定的困擾。如何解決亂碼的問題?
JSP和Servlet的六種中文亂碼處理方法
一、表單提交時(shí)出現(xiàn)亂碼:
在進(jìn)行表單提交的時(shí)候,經(jīng)常提交一些中文,自然就避免不了出現(xiàn)中文亂碼的情況,對(duì)于表單來說有兩種提交方式:get和post提交方式。所以請(qǐng)求的時(shí)候便有g(shù)et請(qǐng)求和post請(qǐng)求。每種方式都有著不同的解決方法,之所以出現(xiàn)亂碼,原因就在于get請(qǐng)求時(shí),其傳遞給服務(wù)器的數(shù)據(jù)是附加在URL地址之后的;而post的請(qǐng)求時(shí),其傳遞給服務(wù)器的數(shù)據(jù)是作為請(qǐng)求體的一部分傳遞給服務(wù)器。這也就導(dǎo)致了對(duì)它們所產(chǎn)生的亂碼的處理方式是不同的。
1、客戶端的get請(qǐng)求
對(duì)于不同的請(qǐng)求方式,解決亂碼的問題也是不一樣的,對(duì)于客戶端的get請(qǐng)求來說,服務(wù)器端處理要想不出現(xiàn)亂碼,解決這個(gè)問題稍微復(fù)雜一些,需要用到String類型的構(gòu)造函數(shù),其中的一個(gè)構(gòu)造函數(shù)就是用指定的編碼方式去解碼,一般都用“UTF-8”的方式。只要在服務(wù)器端將請(qǐng)求得到的參數(shù)重新構(gòu)造成一個(gè)字符串就行了。
經(jīng)過構(gòu)造之后,客戶端輸入中文,且表單時(shí)get請(qǐng)求的情況下,str就變成了中文了。
2、客戶端的post請(qǐng)求
對(duì)于客戶端的post請(qǐng)求來說,處理亂碼的問題就比較簡(jiǎn)單了,因?yàn)檎?qǐng)求的數(shù)據(jù)時(shí)作為請(qǐng)求體的一部分傳遞給服務(wù)器的,所以只要修改請(qǐng)求內(nèi)的編碼就行了。只要在服務(wù)器端的最開始處將請(qǐng)求的數(shù)據(jù)設(shè)置為“UTF-8”就行了,輸入如下語句:request. setCharacterEncoding(“UTF-8”);這樣用戶在服務(wù)器端獲取到的中文數(shù)據(jù)就不再是亂碼了。
二、超鏈接時(shí)出現(xiàn)亂碼(低版本瀏覽器不行IE6)
在Web開發(fā)中,挺多的時(shí)候都是通過超鏈接去傳遞中文參數(shù)的,這也會(huì)導(dǎo)致在顯示的時(shí)候也會(huì)出現(xiàn)亂碼,對(duì)于超鏈接來說,它實(shí)際上是向服務(wù)器端發(fā)送了一個(gè)請(qǐng)求,而它發(fā)出的請(qǐng)求是屬于get請(qǐng)求,所以對(duì)于超鏈接的亂碼來說,它處理亂碼的方式和表單的get請(qǐng)求出現(xiàn)亂碼的方式是一樣的。
三、重定向時(shí)出現(xiàn)亂碼(低版本瀏覽器不行IE6)
有時(shí)寫上response的sendRedirect方法進(jìn)行重定向時(shí)也會(huì)出現(xiàn)亂碼,重定向時(shí)實(shí)際上也是向服務(wù)器發(fā)送了一個(gè)請(qǐng)求,所以解決亂碼的方法和和上面是一樣的。
四、瀏覽器版本低導(dǎo)致的亂碼
上網(wǎng)的時(shí)候,有時(shí)提交的一些信息在地址欄顯示的是“%2C%C6%CC%C6”的字樣,其實(shí)這都是防止出現(xiàn)亂碼進(jìn)行的解決方案,如果你的瀏覽器是IE6或以下版本,則我們的第二種情況和第三種情況會(huì)出現(xiàn)亂碼(尤其是當(dāng)中文是奇數(shù)的時(shí)候),這就不好使了所以我們必須采用另一種比較實(shí)際的作法:
在java.net包中提供了URLEncoder類和URLDcoder類,這兩個(gè)類又分別提供了encode和decode兩個(gè)靜態(tài)方法,分別用于進(jìn)行編碼和解碼。我們將要傳遞的中文參數(shù)進(jìn)行編碼之后,在傳遞給服務(wù)器,服務(wù)器解碼之后,就可以顯示中文了。
進(jìn)行編碼:URLEncoder.encode(stuname,”UTF-8”)
傳遞給服務(wù)器:<a href=”/1.jsp?stuname<%=stuname%>”>傳遞</a>
進(jìn)行解碼:URLDecoder.decode(stuname,”UTF-8”)
五、返回瀏覽器顯示的亂碼
在Servlet編程中,經(jīng)常需要通過response對(duì)象將一些信息返回給瀏覽器,給我們的客戶端,而我們?cè)诜?wù)器端顯示的中文,但是響應(yīng)給客戶端瀏覽器卻是亂碼,這主要是由于response對(duì)象的getWriter()方法返回的PrintWriter對(duì)象默認(rèn)使用“ISO-8859-1”字符集編碼進(jìn)行Unicode字符串到字節(jié)數(shù)組的轉(zhuǎn)換,由于ISO8859-1字符集中根本就沒有包含中文字符,所以Java在進(jìn)行轉(zhuǎn)換的時(shí)候會(huì)將無效的字符編碼輸出給客
下一頁
返回列表
返回首頁
主站蜘蛛池模板:
极品唯美女同互摸互添|
美女黄18以下禁止观看|
国产高清在线精品一区|
一级做一级爱a做片性视频视频|
日韩高清欧美精品亚洲|
亚洲欧洲在线播放|
狠狠躁天天躁无码中文字幕|
向日葵视频app免费下载|
青青草原精品99久久精品66|
国产片**aa毛片视频|
91精品国产网曝事件门|
女人与公拘交酡过程高清视频|
中文字幕无线码一区二区|
日韩精品专区在线影院重磅
|
91制片厂制作传媒免费版樱花
|
亚洲日韩中文字幕无码一区|
玩弄CHINESE丰满人妻VIDEOS|
啊!摁摁~啊!用力~快点视频免费|
里番acg全彩本子在线观看|
国产换爱交换乱理伦片|
香蕉精品视频在线观看|
在线免费黄色网址|
jizz国产精品网站|
性xxxx黑人与亚洲|
中文字幕无线码免费人妻|
日本无卡码一区二区三区
|
久久精品国产只有精品2020|
欧美亚洲另类色国产综合|
亚洲欧美日韩中文在线|
激情按摩系列片AAAA|
免费看AV毛片一区二区三区|
精品精品国产欧美在线观看|
国产一区二区三区内射高清|
里番acg里番龙|
国产做无码视频在线观看浪潮
|
亚洲另类欧美综合久久图片区|
欧美视频久久久|
亚洲美女视频网址|
狠狠噜天天噜日日噜视频麻豆|
免费a级毛片无码a∨性按摩|
精品久久久久久久久中文字幕|