java 将 \u003c \u003e \u003d 转为 <> = 或者其他html符号

本文介绍了一段Java代码,用于处理特殊字符转码问题,通过使用JavaScript引擎进行字符串的unescape操作,实现了对包含HTML标签的JSON字符串的正确解析。

原字符串 {"target_type":"single","msg_type":"text","target_name":"测试家长","target_id":"18539282209","from_id":"13820165774","from_name":"大大","from_type":"user","from_platform":"web","msg_body":{"text":"\u003cdiv style\u003d\"display: flex;align-items: center;word-wrap:break-word;\"\u003e飞飞哥\u003c/div\u003e"},"create_time":1575364059442,"version":1,"msgid":5635856903,"msg_level":0,"msg_ctime":1575364058429}

转码后

{"target_type":"single","msg_type":"text","target_name":"测试家长","target_id":"18539282209","from_id":"13820165774","from_name":"大大","from_type":"user","from_platform":"web","msg_body":{"text":"<div style="display: flex;align-items: center;word-wrap:break-word;">飞飞哥</div>"},"create_time":1575364059442,"version":1,"msgid":5635856903,"msg_level":0,"msg_ctime":1575364058429}
 

java代码是

 String string="{\"target_type\":\"single\",\"msg_type\":\"text\",\"target_name\":\"测试家长\",\"target_id\":\"18539282209\",\"from_id\":\"13820165774\",\"from_name\":\"大大\",\"from_type\":\"user\",\"from_platform\":\"web\",\"msg_body\":{\"text\":\"\\u003cdiv style\\u003d\\\"display: flex;align-items: center;word-wrap:break-word;\\\"\\u003e飞飞哥\\u003c/div\\u003e\"},\"create_time\":1575364059442,\"version\":1,\"msgid\":5635856903,\"msg_level\":0,\"msg_ctime\":1575364058429}";
        ScriptEngineManager sem = new ScriptEngineManager();
        ScriptEngine engine = sem.getEngineByExtension("js");
        String unUrl;
        try {
            unUrl = (String)engine.eval("unescape('"+string+"')");
            System.out.println(unUrl);
        } catch (ScriptException e) {
            e.printStackTrace();
        }

 

package com.github.catvod.spider; import android.content.Context; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.github.catvod.bean.Class; import com.github.catvod.bean.Filter; import com.github.catvod.bean.Result; import com.github.catvod.bean.Vod; import com.github.catvod.crawler.Spider; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Notify; import com.github.catvod.utils.Util; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class CeChi extends Spider { private static String siteUrl = "https://cechi16.com"; private static String cateUrl = "https://gda52.quelingfei.com/getsortdata_all_z.php?"; private static String searchUrl = "https://v2.quelingfei.com/ssszz.php?q="; private Map&lt;String, String&gt; getHeader() { Map&lt;String, String&gt; header = new HashMap&lt;&gt;(); header.put("User-Agent", Util.CHROME); return header; } @Override public void init(Context context, String extend) throws Exception { super.init(context, extend); if (!extend.isEmpty()) { siteUrl = extend; } } @Override public String homeContent(boolean filter) throws Exception { List&lt;Class&gt; classes = new ArrayList&lt;&gt;(); List&lt;String&gt; typeIds = Arrays.asList("tv", "mov", "acg", "zongyi"); List&lt;String&gt; typeNames = Arrays.asList("电视剧", "电影", "动漫", "综艺"); for (int i = 0; i &lt; typeIds.size(); i++) classes.add(new Class(typeIds.get(i), typeNames.get(i))); Document doc = Jsoup.parse(OkHttp.string(siteUrl, getHeader())); List&lt;Vod&gt; list = new ArrayList&lt;&gt;(); for (Element li : doc.select("div.index-list-l").select("ul").select("li")) { String vid = siteUrl + "/" + li.select("a.li-hv").attr("href"); String name = li.select("a.li-hv").attr("title"); String pic = li.select("a.li-hv img").attr("data-original"); String remark = li.select(".name").text(); list.add(new Vod(vid, name, pic, remark)); } LinkedHashMap&lt;String, List&lt;Filter&gt;&gt; filters = new LinkedHashMap(); for (int i = 0; i &lt; typeIds.size(); i++) { String typeId = typeIds.get(i); String filterUrl = siteUrl + String.format("/%s/0/0/all/1.html", typeId); Document filterDoc = Jsoup.parse(OkHttp.string(filterUrl, getHeader())); List&lt;Filter&gt; filterTemp = new ArrayList&lt;&gt;(); for (Element dl : filterDoc.select("div.sy").eq(0).select("dl")) { String key = dl.select("dt").eq(0).text().trim().replace(":",""); String name = dl.select("dt").eq(0).text().trim().replace(":",""); List&lt;Filter.Value&gt; filterValues = new ArrayList&lt;&gt;(); for (Element a : dl.select("dd").select("a")) { String n = a.text(); String vList = a.attr("href"); String v = ""; if (name.contains("剧情")) { v = vList.split("/")[3]; } if (name.contains("年代")) { v = vList.split("/")[2]; } if (name.contains("地区")) { v = vList.split("/")[4]; } filterValues.add(new Filter.Value(n, v)); } filterTemp.add(new Filter(key, name, filterValues)); } filters.put(typeIds.get(i), filterTemp); } return Result.string(classes, list, filters); } @Override public String categoryContent(String tid, String pg, boolean filter, HashMap&lt;String, String&gt; extend) throws Exception { HashMap&lt;String, String&gt; ext = new HashMap&lt;&gt;(); if (extend != null && extend.size() &gt; 0) ext.putAll(extend); String cla = ext.get("按剧情") == null ? "0" : ext.get("按剧情"); String area = ext.get("按地区") == null ? "all" : ext.get("按地区"); String year = ext.get("按年代") == null ? "0" : ext.get("按年代"); String cates = cateUrl + String.format("action=%s&page=%s&year=%s&area=%s&class=%s&dect=0&id=", tid, pg, year,area, cla); Document doc = Jsoup.parse(OkHttp.string(cates, getHeader())); List&lt;Vod&gt; list = new ArrayList&lt;&gt;(); for (Element li : doc.select("li")) { String vid = siteUrl + li.select("a").attr("href"); String name = li.select("a").attr("title"); String pic = li.select("img").attr("data-original"); String remark = li.select(".name").text(); list.add(new Vod(vid, name, pic, remark)); } return Result.string(list); } @Override public String detailContent(List&lt;String&gt; ids) throws Exception { Document doc = Jsoup.parse(OkHttp.string(ids.get(0), getHeader())); StringBuilder vod_play_url = new StringBuilder(); StringBuilder vod_play_from = new StringBuilder(); Elements titles = doc.select("div.pfrom").select("ul").select("li[id^=tab]"); Elements lists = doc.select("div.url").select("ul.urlli").select("ul"); for (int i = 0; i &lt; titles.size(); i++) { Element li = titles.get(i); vod_play_from.append(li.text()); if (i != titles.size() -1) { vod_play_from.append("$$$"); } } for (int i = 0; i &lt; lists.size(); i++) { if (i + 1 &gt; titles.size()) { continue; } Element ul = lists.get(i); Elements liList = ul.select("li"); for (int j = 0; j &lt; liList.size(); j++) { Element li = liList.get(j); String name = li.select("a").text(); String url = siteUrl + li.select("a").attr("href"); if (j != liList.size() - 1) { vod_play_url.append(name).append("$").append(url).append("#"); } else { vod_play_url.append(name).append("$").append(url); } } if (i != titles.size() -1) { vod_play_url.append("$$$"); } } String title = doc.select("dt.name").text(); Elements videoInfo = doc.select("div.info").eq(0).select("dl").select("dd"); String remark = ""; String typeName = ""; String actor = ""; String director = ""; String year = ""; for (int j = 0; j &lt; videoInfo.size(); j++) { Element div = videoInfo.get(j); String span = div.select("b").text(); String text = div.text(); if (span.contains("状态")) { remark = text; } if (span.contains("类型")) { typeName = text; } if (span.contains("主演")) { actor = text; } if (span.contains("导演")) { director = text; } if (span.contains("年代")) { year = text; } } String brief = doc.select("div.article-content").select("p").text(); Vod vod = new Vod(); vod.setVodId(ids.get(0)); vod.setVodYear(year); vod.setVodName(title); vod.setVodActor(actor); vod.setVodRemarks(remark); vod.setVodContent(brief); vod.setVodDirector(director); vod.setTypeName(typeName); vod.setVodPlayFrom(vod_play_from.toString()); vod.setVodPlayUrl(vod_play_url.toString()); return Result.string(vod); } @Override public String searchContent(String key, boolean quick) throws Exception { String url = searchUrl + URLEncoder.encode(key); String json = OkHttp.string(url, getHeader()); JSONArray objects = JSONArray.parseArray(json); List&lt;Vod&gt; list = new ArrayList&lt;&gt;(); for (int j = 0; j &lt; objects.size(); j++) { JSONObject vod = (JSONObject)objects.get(j); String vid = siteUrl + vod.getString("url"); String name = vod.getString("title"); String pic = vod.getString("thumb"); String remark = vod.getString("area"); list.add(new Vod(vid, name, pic, remark)); } return Result.string(list); } @Override public String playerContent(String flag, String id, List&lt;String&gt; vipFlags) throws Exception { Matcher matcher0 = Pattern.compile("/(\\d+).html").matcher(id); String pid = matcher0.find() ? matcher0.group(1) : ""; String content = OkHttp.string(id, getHeader()); Matcher matcher1 = Pattern.compile("src=\"(.*?)\"&gt;&lt;/script&gt;&lt;body&gt;").matcher(content); String js = matcher1.find() ? matcher1.group(1) : ""; String urls = OkHttp.string(js, getHeader()); Matcher matcher2 = Pattern.compile("playarr_(.*?)\\[" + pid + "\\]=\"(.*?.m3u8),-1,").matcher(urls); String realUrl = matcher2.find() ? matcher2.group(2) : ""; return Result.get().url(realUrl).header(getHeader()).string(); } }请将当前代码中的特殊符号转为正常标点
09-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值