![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 267
|
![]()
Добрый день. Есть программа для анализа информации на веб-страницах.
Для определения кодировки страницы используются два метода: - использование ответа сервера (номер кодовой страницы + TEncoding) - использование MLang.dll в режиме анализа текста страницы Оба метода дают ошибки: - первый метод на www.rfs.ru/main/news/ct134/ (выдает <title>????????n?n???. ??n???n????°?»n???n??? n??°??n? ?*?¤??</title>) - второй метод на www.rusteam.permian.ru/players/ (выдает <title>naidiay dinnee ii oo?aieo. eadiee. a</title>) причем если поменять ссылки то восстановление кодировки будет в норме, то есть можно выполнить перекодировку спорной страницы в 2-х функциях параллельно, в одной точно будет правильный результат(кодовая страница 1251) Вопрос: как можно по символам между тегами <title> понять какой способ выбрать? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Просто правильно использовать TEncoding и все.
Показывайте, как вы его используете. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 267
|
![]()
TEncoding используется строго по стандарту
есть гр. Алексеев(он же GunSmoker) и есть у него выложенный пример использования mlang.dll в 3-х вариантах. У меня используется 3-й вариант (автоопределение кодировки с использованием частотного анализа). и все работает в 99% случаев (кроме приведенного в топики примера и когда страница очень маленькая и тогда функция выдает исключение (там Я вставил обработку исключений и принудительное присвоение 1251 в одном месте одной функции, но речь не об этом). так вот все таки иногда ошибается и mlang.dll. но при этом, на этой странице не ошибается TEncoding (используется значение ответа сервера о используемой кодировке страницы), зато TEncoding ошибается в до 10% случаев. сейчас надо применить следующую обработку: - скачать страницу в RawByteString - проверить в теге TITLE, получилось ли 1251 - если нет применить TEncoding такая структура обработки позволит повысить результат возможно до 99.99% Ну теперь то всем уже понятно для чего мне нужно определить кодировку символов между тегами TITLE? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
Попробуйте так: выбираете TITLE, применяете к нему TEncoding и тут же проводите обратную операцию с TEncoding, полученный результат сравниваете с уже имеющимся. Точно совпадение говорит о правильно выбранной кодировке. Затратно по ресурсам, но строка не большая, проблем не должно возникнуть.
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 267
|
![]()
имеется ввиду запустить цикл с перебором значений кодировки(650001, 1251, 20866 и далее) и если строка из ТИТЛ в формате RawByteString после кодирования-декодирования совпадет со строкой из функции, то кодировка та самая?
под это есть какая то теоретическая база? |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
Увы, никакой теоретической базы под это нет. Попробуйте
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определение высоты страницы. | leny | JavaScript, Ajax | 3 | 14.01.2011 02:06 |
смена кодовой страницы dbf на "0" в VBA (Excel 2003) | xamillion | Microsoft Office Excel | 9 | 11.11.2010 00:23 |
изменение кодовой страницы dbf-файла (foxPro) | Ks2010 | БД в Delphi | 19 | 13.08.2010 11:33 |
Загрузка веб страницы | usersat | Общие вопросы Delphi | 1 | 13.05.2010 16:51 |
Определение перенаправления страницы | мимо | Работа с сетью в Delphi | 0 | 26.03.2010 12:03 |