Главная страница
    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.46 MB
Время: 0.005 c
15-1443907804
Юрий
2015-10-04 00:30
2016.07.24
С днем рождения ! 4 октября 2015 воскресенье


15-1442349057
Marser
2015-09-15 23:30
2016.07.24
Ihor Osov yak умер :-(


15-1446413401
Юрий
2015-11-02 00:30
2016.07.24
С днем рождения ! 2 ноября 2015 понедельник


15-1441009172
Юрий Зотов
2015-08-31 11:19
2016.07.24
Рыдал. Только не знаю от чего - от смеха или от горя...


2-1415206334
M.A.
2014-11-05 19:52
2016.07.24
Помогите переписать с VCL на Api





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский