国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

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

2020-04-11 11:16:33
字體:
供稿:網(wǎng)友

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

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

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

2、 Tomcat服務(wù)器默認采用的是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,設(shè)置對所有的路徑都過濾,那么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ù)了。以上過濾器采用了裝飾模式的設(shè)計,關(guān)于裝飾模式,百度如下:

(1) 裝飾對象和真實對象有相同的接口。這樣客戶端對象就可以以和真實對象相同的方式和裝飾對象交互。
(2) 裝飾對象包含一個真實對象的索引(reference)
(3) 裝飾對象接受所有的來自客戶端的請求。它把這些請求轉(zhuǎn)發(fā)給真實的對象。
(4) 裝飾對象可以在轉(zhuǎn)發(fā)這些請求以前或以后增加一些附加功能。這樣就確保了在運行時,不用修改給定對象的結(jié)構(gòu)就可以在外部增加附加的功能。在面向?qū)ο蟮脑O(shè)計中,通常是通過繼承來實現(xiàn)對給定類的功能擴展。

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南昌市| 湄潭县| 巍山| 仙桃市| 麻城市| 盱眙县| 山阳县| 即墨市| 高唐县| 郁南县| 历史| 汽车| 旬邑县| 沐川县| 重庆市| 惠水县| 宜宾县| 新沂市| 普兰县| 仪陇县| 沁源县| 恩平市| 镇坪县| 高阳县| 天等县| 建昌县| 灌阳县| 安国市| 南汇区| 滕州市| 翁牛特旗| 金昌市| 镇原县| 勃利县| 公安县| 东海县| 高雄市| 鄢陵县| 崇明县| 辰溪县| 新巴尔虎左旗|