您好,欢迎访问一九零五行业门户网

Andorid中对HTML格式数据进行解码_html/css_WEB-ITnose

webview是android开发中常用的组件之一,用来加载网页数据,可以直接传入url,也可以传入html格式字符等。并且我们可以通过webview中相关方法对加载的内容进行处理,如js交互,获取加载的网页链接地址信息等。今天在开发中遇到一个小功能,就是要用webview来加载一个网页数据,网页中有很多商品,点某一商品又可进入到app中的商品详情页面,主要方法就是通过webviewclient中的shouldoverrideurlloading(webview view, string url)方法获取url特定信息并进行处理。比如,我要截取特定字符中的一部分数据,处理方法如下:
@override
public boolean shouldoverrideurlloading(webview view, string url) {
((customwebview) view).resetloadedurl();
if(url != null ){
 if(url.contains(?method=search¶meter=)){//比如要判断url中是否包括?method=search¶meter=字符,就截取获取?method=search¶meter=后面的文字
int length = ?method=search¶meter=.length();
int index = url.indexof(?method=search¶meter=);
url = urldecoder.decode(url);//数据转码
string keyword = url.substring(index+length);//截取操作
bundle bundle = new bundle();
bundle.putstring(categoryname, keyword);
mmainactivity.showactivity(activity, xx.class,bundle);//把截取到的数据传入到指定页面中
return true;
}else 
//todo
return true;

}
return false;
}
开始没有加入上面红色文字,结果截取到的字符是一串由%和字母等组成的一长串字符,并非我想要的中文汉字,后来加入红色文字,就获取到了想要的字符,如“联想电脑”。 
    今天查了下java的api,了解了一下urldecoder这个类:
html 格式解码的实用工具类。该类包含了将 string 从 application/x-www-form-urlencoded mime 格式解码的静态方法。
该转换过程正好与 urlencoder 类使用的过程相反。假定已编码的字符串中的所有字符为下列之一:a 到 z、a 到 z、0 到 9 和 -、_、. 以及 *。允许有 % 字符,但是将它解释为特殊转义序列的开始。
转换中使用以下规则:
字母数字字符 a 到 z、a 到 z 和 0 到 9 保持不变。 特殊字符 .、-、* 和 _ 保持不变。 加号 + 转换为空格字符  。 将把 %xy 格式序列视为一个字节,其中 xy 为 8 位的两位十六进制表示形式。然后,所有连续包含一个或多个这些字节序列的子字符串,将被其编码可生成这些连续字节的字符所代替。可以指定对这些字符进行解码的编码机制,或者如果未指定的话,则使用平台的默认编码机制。 该解码器处理非法字符串有两种可能的方法。一种方法是不管该非法字符,另一种方法是抛出 illegalargumentexception 异常。解码器具体采用哪种方法取决于实现。现在主要用的方法是:
decode(string s, string enc)       使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。解码后才能获取到我们想要的正确数据。
与urldecoder的类是urlencoder:该类包含了将 string 转换为 application/x-www-form-urlencoded mime 格式。主要方法:encode(string s, string enc)    使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。
          下次遇到这样的问题就知道怎么解决了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
其它类似信息

推荐信息