Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.07.24;
Скачать: CL | DM;

Вниз

Кодировка текста   Найти похожие ветки 

 
marlet   (2014-10-13 14:57) [0]

подскажите пожалуйста, пытаюсь парсить поиск в гугле, получаю ответ:

..
content="text/html; charset=ISO-8859-1"><title> - &#1055;&#1086;&#1080;&#1089;&#1082; &#1074; Google</title>
..

как правильно называется эта кодировка кириллицы и как декодировать например титлы в "поиск в Google" ?

что-то подсказывает копать в сторону URL decode, но не выходит никак..
delphiXE6


 
marlet   (2014-10-13 15:00) [1]

от блин, обрамлю в код, что бы было видно

<title> - &#1055;&#1086;&#1080;&#1089;&#1082; &#1074; Google</title>


 
marlet   (2014-10-13 15:01) [2]

та что такое ))  разделил пробелом

<title>& # 1055 ; & # 1086 ; & # 1080 ; & # 1089 ; & # 1082 ;  & # 1074  Google</title>


 
icWasya ©   (2014-10-13 15:20) [3]

такая ISO-8859-1 кодировка - ниразу не кирилица
Кирилица - это ISO-8859-5, называется Кирилица ISO, кодовая страница 28595, а вот разделённое пробелом - это юникод.
символ амперсанд - признак, что дальше идёт спец символ, решётка - что дальше идёт цесятичное значение символа, цифры - собственно код символа, точка с запятой - конец спец символа

Где-то в недрах "$(Delphi)\source\Win32\xml\xdom.pas"  должны быть функции для преобразований


 
marlet   (2014-10-13 15:35) [4]

спасибо, примерно понятно..
нужно перевести в байты и далее TEncoding.UTF8.GetString
к сожалению в XE6 нет xdom.pas
можно конечно написать и свою функцию перевода в байты, но попробую ещё поискать из готового.


 
icWasya ©   (2014-10-13 17:06) [5]

Это не совсем UTF8. Это именно недра THML/XML
А внутри xdom, если отбросить всю красивость, делается примерно следующее:
сканируется строка, на предмет нахождения в ней символа амперсанд ,за которым на некотором расстоянии находится точка с запятой.
Далее смотрят, что стоит между ними.
Там может стоять lt, gt, amp, quot, apos, nbsp ну и наверно ещё что-то.
Вышеупомянутое заменяется на знаки меньше, больше, амперсанд, двойная кавычка, апостроф и пробел соответственно.
Если за апострофом стоит знак # - то далее должно быть десятичное число, которое представляет код знака.
Считывают это число, преобразуют к WideChar, и вставляют в строку. Всё в цикле. Никаких вызовов API. :(



Страницы: 1 вся ветка

Текущий архив: 2016.07.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
15-1443532985
Дмитрий Белькевич
2015-09-29 16:23
2016.07.24
Ищу реализацию алгоритма SIFT на Delphi


2-1413879971
Alex_C
2014-10-21 12:26
2016.07.24
Своя отрисовка TMemo


15-1447832032
Dimka Maslov
2015-11-18 10:33
2016.07.24
Вот интересно


6-1281358726
PonosetcDM
2010-08-09 16:58
2016.07.24
Проблемма зависания IDTCPClient


2-1412944569
Mass
2014-10-10 16:36
2016.07.24
прилипание