在開發中難免會遇到中文顯示亂碼的問題,亂碼問題是一個很棘手的問題,常常令程序員抓狂。現在把我使用的幾種解決亂碼的方案和大家共享!
一、表單提交的亂碼處理
表單提交分為GET和POST兩種提交方式。兩種方式的亂碼解決又不一樣,用POST提交只需要在接受的時候加上request.setCharacterEncoding("utf-8");而GET方法處理應該將接收過來的值打碎成ISO-8859-1編碼的,然后再組裝成UTF-8的,new String(request.getParameter(param).getBytes("iso8859-1"),"UTF-8");
二、過濾器處理亂碼問題
如果每次接收都像上面那樣去處理的話肯定是太麻煩了,用過濾器來處理請求的亂碼問題很方便,只需要寫一個過濾器,就可以過濾所有請求頁面的亂碼問題了。至於如何用過濾器處理亂碼請參考《用過濾器來解決JSP中文亂碼問題》。不過值得注意的是,如果使用Struts的話,在web.xml里面處理編碼的過濾器必須在struts過濾器前面注冊,否則所有頁面都不會經過過濾器。
三、ajax請求的亂碼問題
如果使用ajax出現了亂碼問題這樣解決:前端ajax函數的請求的url里面中文參數用兩個encodeURI()函數處理,var url = "user.do?p=checkUser&name=" + encodeURI(encodeURI(username.value));而服務器端則用 URLDecoder.decode()函數去接收,string userName = URLDecoder.decode(request.getParameter("name"),"utf-8"); 這樣就能夠解決ajax請求中亂碼的問題了。
四、鏈接請求中亂碼問題(IE6)
使用鏈接請求傳遞中文參數時在IE6里面會出現亂碼,解決方法如下:使用encodeURI(param)對中文參數處理一下就行了,如location = "users.do?p=login&&username="+encodeURI(username)+"&password="+encodeURI(password);
待續.........