Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.012 c
2-1416291081
lewka
2014-11-18 09:11
2016.07.24
Кодировка TWebbrowser


15-1442343788
DayGaykin
2015-09-15 22:03
2016.07.24
Копирование потока без хвоста.


4-1278077072
Festil
2010-07-02 17:24
2016.07.24
Инициализация драйвера камеры.


4-1277230542
Отшельник
2010-06-22 22:15
2016.07.24
Изменить значение в памяти чужой программы которое берется из INI


15-1438276951
Pavelnk
2015-07-30 20:22
2016.07.24
Что там с W10?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский