Android編程向服務器發(fā)送請求時出現(xiàn)中文亂碼問題的解決方法
本文實例講述了Android編程向服務器發(fā)送請求時出現(xiàn)中文亂碼問題的解決方法。分享給大家供大家參考,具體如下:
我們在andorid項目中通過get方式向服務器發(fā)送請求,其中url參數(shù)帶有中文,將會產(chǎn)生亂碼,亂碼產(chǎn)生的原因有兩種:
1、 在提交參數(shù)時,沒有對中文參數(shù)進行URL編碼
2、 Tomcat服務器默認采用的是IOS8859-1編碼(不支持中文)得到參數(shù)值
解決:
1、 進入android項目,在其中要提交參數(shù)的時候,對參數(shù)的值進行編碼:
2、 通過IOS8859得到字符串的二進制數(shù)據(jù),然后再通過UTF-8得到新的字符串即可。
如果整個web項目中所有請求都要采用上面的方式來解決編碼問題將會比較麻煩,可以采用過濾器來解決。
新建filter,設置對所有的路徑都過濾,那么URL Pattern為:/*,其中每次請求到來的時候都會調(diào)用doFilter方法,具體的代碼如下:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; if("GET".equals(req.getMethod())){ EncodingRequestWrapper wrapper = new EncodingRequestWrapper(req); chain.doFilter(wrapper, response); }else{ req.setCharacterEncoding("UTF-8"); chain.doFilter(request, response); } }
其中 EncodingRequestWrapper代碼:
public class EncodingRequestWrapper extends HttpServletRequestWrapper { private HttpServletRequest request; public EncodingRequestWrapper(HttpServletRequest request) { super(request); this.request = request; } @Override public String getParameter(String name) { String value = request.getParameter(name); if(value!=null){ try { value = new String(value.getBytes("ISO8859-1"), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return value; } }
這樣對所有的GET請求都能正確處理中文參數(shù)了。以上過濾器采用了裝飾模式的設計,關于裝飾模式,百度如下:
(1) 裝飾對象和真實對象有相同的接口。這樣客戶端對象就可以以和真實對象相同的方式和裝飾對象交互。
(2) 裝飾對象包含一個真實對象的索引(reference)
(3) 裝飾對象接受所有的來自客戶端的請求。它把這些請求轉(zhuǎn)發(fā)給真實的對象。
(4) 裝飾對象可以在轉(zhuǎn)發(fā)這些請求以前或以后增加一些附加功能。這樣就確保了在運行時,不用修改給定對象的結(jié)構(gòu)就可以在外部增加附加的功能。在面向?qū)ο蟮脑O計中,通常是通過繼承來實現(xiàn)對給定類的功能擴展。
希望本文所述對大家Android程序設計有所幫助。
- android客戶端從服務器端獲取json數(shù)據(jù)并解析的實現(xiàn)代碼
- Android客戶端post請求服務器端實例
- Android編程之客戶端通過socket與服務器通信的方法
- android異步請求服務器數(shù)據(jù)示例
- Android解析服務器端發(fā)來的xml數(shù)據(jù)示例
- Android TCP 文件客戶端與服務器DEMO介紹
- Android使用httpPost向服務器發(fā)送請求的方法
- Android程序開發(fā)通過HttpURLConnection上傳文件到服務器
- Android封裝的http請求實用工具類
- android實用工具類分享(獲取內(nèi)存/檢查網(wǎng)絡/屏幕高度/手機分辨率)
- Android開發(fā)實現(xiàn)查詢遠程服務器的工具類QueryUtils完整實例
相關文章
Android EditTextView 實現(xiàn)帶空格分隔的輸入(電話號碼,銀行卡)
這篇文章主要介紹了Android EditTextView 實現(xiàn)帶空格分隔的輸入(電話號碼,銀行卡)的相關資料,需要的朋友可以參考下2018-02-02Android App中使用LinearLayout進行居中布局的實例講解
這篇文章主要介紹了Android App中使用LinearLayout進行居中布局的實例講解,文中分別介紹了水平居中和垂直居中的相關線性布局,需要的朋友可以參考下2016-04-04Android 6.0上sdcard和U盤路徑獲取和區(qū)分方法
今天小編就為大家分享一篇Android 6.0上sdcard和U盤路徑獲取和區(qū)分方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08