Form表單是
企業網站程序中的重要組成部分,但是Formolu表單經常會出現一些亂碼,給網站造成許多麻煩。針對Form表單常見的亂碼問題,這裏我總結了一些解決方案,希望可以幫到大家。
1、表單提交時的亂碼問題
在進行表單提交的時候,經常在提交中文時會出現一些亂碼,這也是常見的一種亂碼形式。表單的提交方式有兩種:get和post提交方式。所以請求的時候便有get請求和post請求。那麼這兩種請求方式產生的亂碼問題,其解決方案是不同的。如我做一個
軟件開發的一個表單提交,如果用get請求時,其傳遞給服務器的數據是附加在URL地址之後的;而post的請求時,其傳遞給服務器的數據是作爲請求體的一部分傳遞給服務器。這也就導致了對它們所產生的亂碼的處理方式是不同的。
(1)客戶端的get請求
對於客戶端的get請求來說,服務器端處理要想不出現亂碼,解決這個問題稍微複雜一些,需要用到String類型的構造函數,其中的一個構造函數就是用指定的編碼方式去解碼,一般都用“UTF-8”的方式。只要在服務器端將請求得到的參數重新構造成一個字符串就行了。經過構造之後,客戶端輸入中文,且表單時get請求的情況下,str就變成了中文了。
(2)客戶端的post請求
對於客戶端的post請求來說,處理亂碼的問題就比較簡單了,因爲請求的數據時作爲請求體的一部分傳遞給服務器的,所以只要修改請求內的編碼就行了。只要在服務器端的最開始處將請求的數據設置爲“UTF-8”就行了,輸入如下語句:request. setCharacterEncoding(“UTF-8”);這樣用戶在服務器端獲取到的中文數據就不再是亂碼了。
2、超鏈接時出現亂碼
在Web開發中,挺多的時候都是通過超鏈接去傳遞中文參數的,這也會導致在顯示的時候也會出現亂碼,對於超鏈接來說,它實際上是向服務器端發送了一個請求,而它發出的請求是屬於get請求,所以對於超鏈接的亂碼來說,它處理亂碼的方式和表單的get請求出現亂碼的方式是一樣的。
3、瀏覽器版本低導致的亂碼
這個問題也是很常見的,不同的瀏覽器,不同的版本會出現一些亂碼問題。地址欄顯示的是“%2C%C6%CC%C6”的字樣,其實這都是防止出現亂碼進行的解決方案,如果你的瀏覽器是IE6或以下版本,則我們的第二種情況和第三種情況會出現亂碼(尤其是當中文是奇數的時候),這就不好使了所以我們必須採用另一種比較實際的作法:
在java.net包中提供了URLEncoder類和URLDcoder類,這兩個類又分別提供了encode和decode兩個靜態方法,分別用於進行編碼和解碼。我們將要傳遞的中文參數進行編碼之後,在傳遞給服務器,服務器解碼之後,就可以顯示中文了。
進行編碼:URLEncoder.encode(stuname,”UTF-8”)
傳遞給服務器:”>傳遞
進行解碼:URLDecoder.decode(stuname,”UTF-8”)
Form表單的出現的亂碼問題還有很多,這裏介紹的只是在我的工作中常見的亂碼問題。其實在工作中你會發現,Form表單的亂碼問題還非常多,希望有經驗的朋友也可以分享些經驗。