最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程向服務器發(fā)送請求時出現(xiàn)中文亂碼問題的解決方法

 更新時間:2015年11月18日 12:13:24   作者:段殘夢  
這篇文章主要介紹了Android編程向服務器發(fā)送請求時出現(xiàn)中文亂碼問題的解決方法,實例分析了Android參數(shù)傳遞過程中中文亂碼的解決技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Android編程向服務器發(fā)送請求時出現(xiàn)中文亂碼問題的解決方法。分享給大家供大家參考,具體如下:

我們在andorid項目中通過get方式向服務器發(fā)送請求,其中url參數(shù)帶有中文,將會產生亂碼,亂碼產生的原因有兩種:

1、 在提交參數(shù)時,沒有對中文參數(shù)進行URL編碼

2、 Tomcat服務器默認采用的是IOS8859-1編碼(不支持中文)得到參數(shù)值

解決:

1、 進入android項目,在其中要提交參數(shù)的時候,對參數(shù)的值進行編碼:

復制代碼 代碼如下:
URLEncoder.encode(value, 編碼方式); //"UTF-8"

2、 通過IOS8859得到字符串的二進制數(shù)據(jù),然后再通過UTF-8得到新的字符串即可。
復制代碼 代碼如下:
String title = new String(value.getBytes("ISO8859-1","UTF-8");

如果整個web項目中所有請求都要采用上面的方式來解決編碼問題將會比較麻煩,可以采用過濾器來解決。

新建filter,設置對所有的路徑都過濾,那么URL Pattern為:/*,其中每次請求到來的時候都會調用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) 裝飾對象接受所有的來自客戶端的請求。它把這些請求轉發(fā)給真實的對象。
(4) 裝飾對象可以在轉發(fā)這些請求以前或以后增加一些附加功能。這樣就確保了在運行時,不用修改給定對象的結構就可以在外部增加附加的功能。在面向對象的設計中,通常是通過繼承來實現(xiàn)對給定類的功能擴展。

希望本文所述對大家Android程序設計有所幫助。

相關文章

最新評論

张家口市| 吕梁市| 都昌县| 镇赉县| 黄平县| 芷江| 平乡县| 淮北市| 东乌珠穆沁旗| 云安县| 大悟县| 莱西市| 嘉定区| 台东市| 仁寿县| 东乌珠穆沁旗| 宝兴县| 黎川县| 岳阳县| 承德县| 兴文县| 静乐县| 丰都县| 乌苏市| 安丘市| 临沧市| 桦南县| 海南省| 札达县| 探索| 萝北县| 洛阳市| 都匀市| 靖边县| 紫云| 杭锦后旗| 四川省| 六盘水市| 嘉黎县| 台中市| 聂拉木县|