Главная страница
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.013 c
15-1444396522
ВладОшин
2015-10-09 16:15
2016.07.24
нужно быстро отсечь "хвост" массива чисел


2-1415045309
M.A.
2014-11-03 23:08
2016.07.24
WM_MOUSEMOVE для STATIC


2-1412950706
AntonArm
2014-10-10 18:18
2016.07.24
Xe7 и Thread


15-1442261724
Pavia
2015-09-14 23:15
2016.07.24
Определения.


2-1416114619
topdon
2014-11-16 08:10
2016.07.24
Компонент "Страница HTML" Delphi XE7