Форум: "Начинающим";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];
ВнизКодировка текста Найти похожие ветки
← →
marlet (2014-10-13 14:57) [0]подскажите пожалуйста, пытаюсь парсить поиск в гугле, получаю ответ:
..
content="text/html; charset=ISO-8859-1"><title> - Поиск в Google</title>
..
как правильно называется эта кодировка кириллицы и как декодировать например титлы в "поиск в Google" ?
что-то подсказывает копать в сторону URL decode, но не выходит никак..
delphiXE6
← →
marlet (2014-10-13 15:00) [1]от блин, обрамлю в код, что бы было видно
<title> - Поиск в 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.004 c