Конференция "Начинающим" » Перекодировка из &#xxxx; в удобочитаемый
 
  • demon © (17.05.10 19:32) [0]
    При парсинге html наткнулся на строки, закодированные вот в таком виде &#xxxx;&#xxxx;&#xxxx; (где xxxx это цифра).
    Помогите раскодировать...
  • Юрий Зотов © (17.05.10 22:15) [1]
    А что должно из этой строки получиться?
  • RWolf © (17.05.10 22:17) [2]
    как-то так:
    strRes:='';
    i:=1;
    while i<=length(strDoc)-7 do begin
     if Copy(strDoc,i,2)='&#' then begin
       strRes:=strRes+chr(StrToInt('$'+Copy(strDoc,i+2,4)));
       inc(i,6);
     end
     else strRes:=strRes+strDoc[i];
     inc(i);
    end;

  • Игорь Шевченко © (18.05.10 00:43) [3]

    > При парсинге html наткнулся на строки, закодированные вот
    > в таком виде &#xxxx;&#xxxx;&#xxxx; (где xxxx это цифра).
    >  


    Это юникод
  • Германн © (18.05.10 01:03) [4]

    > Игорь Шевченко ©   (18.05.10 00:43) [3]

    Телепат!
    :)
  • HTML (18.05.10 10:53) [5]

    > Германн ©   (18.05.10 01:03) [4]
    >
    > > Игорь Шевченко ©   (18.05.10 00:43) [3]
    >
    > Телепат!
    > :)


    "&#xxxx;" - cтандартное представление символов в HTML
  • demon © (18.05.10 15:41) [6]
    RWolf, не работает ваш вариант.
  • RWolf © (18.05.10 15:45) [7]
    [6], я его не проверял. Сейчас вижу, что '$'+ там явно лишнее.
  • demon © (18.05.10 17:48) [8]
    Rwolf, предложенный вами алгоритм не подходит для раскодировки, вместо слова "Сервер" (это Сервер ) он выдал !5@25@
  • demon © (18.05.10 17:50) [9]
    хм, в скобках я указал в закодированном виде, но браузер естественно отображает это читаемом виде :)
  • demon © (19.05.10 02:00) [10]
    Нашел в интернете что это кодировка CP-1251  (http://www.orwell.ru/test/CP/_?cp1251)
    Но не смог раскодировать, так что вопрос актуальный
  • Германн © (19.05.10 02:10) [11]

    > Но не смог раскодировать, так что вопрос актуальный

    Ты Игорь Шевченко ©   (18.05.10 00:43) [3] прочитал?
  • demon © (19.05.10 03:05) [12]
    Но он не прав! Какой же это Юникод?
    Это CP-1251, я проверял по таблице что в моем предыдущем посте, все символы сходятся. Тем более в шапке страницы, которую я собираюсь парсить  указано: charset=windows-1251.
  • Германн © (19.05.10 03:13) [13]

    > demon ©   (19.05.10 03:05) [12]
    >
    > Но он не прав! Какой же это Юникод?

    Ну, ну. :)
  • demon © (19.05.10 03:35) [14]
    Вот так получилось :)

    function HTMLCharsToStr(strDoc: string): String;
    var
     i: integer;
     W : WideChar;
    begin
     Result:='';
     i:=1;
     while i<=length(strDoc)-7 do begin
      if Copy(strDoc,i,2)='&#' then begin
        Result:=Result+WideChar(StrToInt(Copy(strDoc,i+2,4)));
        inc(i,6);
      end
      else Result:=Result+strDoc[i];
      inc(i);
     end;
    end;
  • Anatoly Podgoretsky © (19.05.10 06:28) [15]
    > demon  (19.05.2010 03:05:12)  [12]

    Неправ ты, партизано сапиенс.
  • Плохиш © (19.05.10 11:11) [16]
    Хм

    > demon ©   (19.05.10 03:05) [12]
    >
    > Но он не прав! Какой же это Юникод?


    > demon ©   (19.05.10 03:35) [14]
    > Вот так получилось :)

    >     Result:=Result+WideChar(StrToInt(Copy(strDoc,i+2,4)));
    >

    не сходится.
  • demon © (19.05.10 11:56) [17]
    Ну, значит я не прав был, не знал просто что Юникод такой бывает, обычно вижу что-то вроде Сервер
  • Исламбек Курдюкбаев (19.05.10 18:20) [18]
    Удалено модератором
    Примечание: Забаню за неуважение к правилам
 
Конференция "Начинающим" » Перекодировка из &#xxxx; в удобочитаемый
Есть новые Нет новых   [134437   +29][b:0][p:0.001]