Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кодировка текста


marlet ©   (2014-10-13 14:57:00) 

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

..
content="text/html; charset=ISO-8859-1"> - Поиск в Google
..

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

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


icWasya   (2014-10-13 17:06:00) [1]

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


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

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


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

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

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


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

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

& # 1055 ; & # 1086 ; & # 1080 ; & # 1089 ; & # 1082 ;  & # 1074  Google


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

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

- Поиск в Google


Наверх

Титульная страница Поиск, карта сайта Написать письмо