解码html作为json响应返回 – android

我将跟随编码的html作为json响应,并且不知道如何将其解码为正常的html字符串,顺便说一句,这是一个非常标记的标记。

x3ca hrefx3dx22http:\/\/wordnetweb.princeton.edu\/perl\/webwn?sx3dstrandx22x3ehttp:\/\/wordnetweb.princeton.edu\/perl\/webwn?sx3dstrandx3c\/ax3e 

我已经尝试过java.net.UrlDecoder.decode而没有任何问题。

这不是我以前见过的编码,但它看起来像xYZ(其中Y和Z是hex数字[0-9a-f] )意味着“ascii代码为0xYZ的字符”。 我不确定字母x本身是如何编码的,所以我建议你试着找出来。 但是你可以在正则表达式x([0-9a-f]{2})上进行查找和替换,获取由两个hex数字表示的整数,然后将其转换为char (或类似于那)。

然后,它看起来像斜线(和其他字符?看看你是否能找到…)总是在它们前面有一个反斜杠,所以做另一个查找和替换。

您搜索的术语是“UTF8代码单元”。 这些代码单元基本上是反斜杠,后跟“x”和hexascii代码。 我为你写了一个小转换器方法:

 public static String convertUTF8Units(String input) { String part = "", output = input; for(int i=0;i<=input.length()-4;i++) { part = input.substring(i, i+4); if(part.startsWith("\\x")) { byte[] rawByte = new byte[1]; rawByte[0] = (byte) (Integer.parseInt(part.substring(2), 16) & 0x000000FF); String raw = new String(rawByte); output = output.replace(part, raw); } } return output; } 

我知道,它有点邋,,但它的工作原理:)

谢谢!!

注意,在操作符中必须为“<=”否则一个字符无法解码。

for(int i=0;i<=input.length()-4;i++) {..}

干杯!

这对我有用

  public static String convertUTF8Units_version2(String input) throws UnsupportedEncodingException { return URLDecoder.decode(input.replaceAll("\\\\x", "%"),"UTF-8"); }