Расшифровка HTML возвращается как ответ JSON - Android - PullRequest
2 голосов
/ 23 сентября 2010

Я получаю следующий закодированный html как ответ json и не знаю, как декодировать его в обычную строку html, кстати, это ахорный тег.

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

Я пробовал java.net.UrlDecoder.decode без удачи.

Ответы [ 4 ]

6 голосов
/ 23 сентября 2010

Вы ищете термин «кодовые единицы UTF8».Эти единицы кода в основном являются обратной косой чертой, за которой следуют "x" и шестнадцатеричный код ascii.Я написал для вас небольшой метод конвертации:

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;
}

Я знаю, он немного вялый, но он работает:)

1 голос
/ 16 марта 2012

Спасибо !!

Будьте осторожны, оператор for должен иметь значение «

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

Ура!

1 голос
/ 23 сентября 2010

Это не та кодировка, которую я видел раньше, но она выглядит как xYZ (где Y и Z - шестнадцатеричные цифры [0-9a-f]) означает «символ, код ascii которого равен 0xYZ».Я не уверен, как будет закодирована буква x, поэтому я бы порекомендовал выяснить.Но тогда вы можете просто найти и заменить регулярное выражение x([0-9a-f]{2}), получив целое число, представленное двумя шестнадцатеричными числами, и затем приведя его к char (или что-то похожее на это),

Кроме того, похоже, что косые черты (и другие символы? Посмотрите, сможете ли вы узнать ...), всегда имеют обратную косую черту перед ними, поэтому сделайте еще один поиск и замену для этого.

0 голосов
/ 01 августа 2014

Это работает для меня

    public static String convertUTF8Units_version2(String input) throws UnsupportedEncodingException
    {
         return URLDecoder.decode(input.replaceAll("\\\\x", "%"),"UTF-8");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...