热门搜索 :
考研考公
您的当前位置:首页正文

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

2020-11-27 来源:桦陀教育

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 格式。

    下次遇到这样的问题就知道怎么解决了。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    Top