Andorid中对HTML格式数据进行解码

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&parameter=")){//比如要判断url中是否包括"?method=search&parameter="字符,就截取获取"?method=search&parameter="后面的文字

int length = "?method=search&parameter=".length();

int index = url.indexOf("?method=search&parameter=");

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

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

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

时间: 2024-08-29 10:06:46

Andorid中对HTML格式数据进行解码的相关文章

在JSP页面中输出JSON格式数据

JSON-taglib是一套使在JSP页面中输出JSON格式数据的标签库. JSON-taglib主页: http://json-taglib.sourceforge.net/index.htmlJAR包下载地址: http://sourceforge.net/projects/json-taglib/files/latest/download 使用方法:1.下载json-taglib.jar,将其放到WEB-INF/lib目录2.在jsp页面中做如下声明:<%@ taglib prefix=&qu

在.NET中使用Speex -- 音频数据编解码

Speex是一套开源的音频编解码库,最新版本还包含了回音消除和防抖动等功能,如果我们想开发语音聊天或视频会议这样的系统,Speex将是一个不错的选择.到 http://www.speex.org可以下载Speex的源码(编译后的dll为libspeex.dll),最新版本为1.2.不过源码是用C++开发的,直接在.NET中使用会有诸多不便,为此,我用C#将其封装,使得编解码的调用相当简单. 由于Speex原始导出的API不是很方便C#调用,所以,在用C#封装之前,先要用C++对Speex的原始A

Oracle中对XML格式数据的操作,CLOB类型转换XMLType类型

今天遇到个问题,关于Oracle中xml格式数据的操作. 问题记录:需求上明确该字段类型为xmltype,要做的是解析该字段,但是由于数据库设计人员的问题,某些表中的该字段类型设计成了Clob类型. 解决方法: xmltype类型解析很容易:使用extractvalue函数即可,用法: select column_name1,column_name2,extractvalue(column_name3,'/nodeName1/nodeName2/nodeName3') from table; c

IT项目中使用 json格式数据 保存项目配置信息, 在配置文件再读取json文件的内容进行赋值

json格式小巧玲珑,适合做配置文件,特别是大型项目中, 可以将配置信息分类保存到不同的json文件中, 然后再在配置文件中读取配置文件的数据进行赋值, 这里以python为例进行说明: 假设在yourfile.json文件中保存了如下信息: { "user_message":{ "name":"lowman", "age":"14", }, "database":{ "USE

Android中解析JSON格式数据常见方法合集

待解析的JSON格式的文件如下: [{"id":"5", "version":"1.0", "name":"xiaowang"}, {"id":"10", "version":"2.0", "name":"lisi"}] 一.使用JSONObject来解析JSON数据

android 中解析json格式数据

本文来自http://tonysun3544.iteye.com/category/188238 package com.tony.json; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class JsonActivity extends Activity { /* Called when the act

Bash中使用MySQL导入导出CSV格式数据[转]

转自: http://codingstandards.iteye.com/blog/604541 MySQL中导出CSV格式数据的SQL语句样本如下: select * from test_info into outfile '/tmp/test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n'; MySQL中导入CSV格式数据的SQL语句

iOS开发之解析XML格式数据

XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用Swift. 首先自己写一个简单的XML: <data> <person age="15">zhangsan</person> <person age="2">lisi</person> <person&

AJAX(四)实例 -- json格式数据

本期来讲解在AJAX中使用json格式数据.不过我们先不说json的事,先来做个案例,然后由这个案例我们再来讨论为啥要用json数据,以及怎么用. 一.案例   非常经典,也是非常简单的AJAX案例,省市联动.就是在网上常见的,选择一个省份,然后城市所在的<select>标签中再动态加载进来所选省份包含的城市选项. HTML是极其简单的.为了让案例更简单,省份的<select>标签中的选项都写死了,其中value代表省份的主键id.城市所对应的<select>标签也是如