Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 11.09.2013, 23:41   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 243
По умолчанию Невизульное определение неправильной кодовой страницы веб-страницы

Добрый день. Есть программа для анализа информации на веб-страницах.
Для определения кодировки страницы используются два метода:
- использование ответа сервера (номер кодовой страницы + 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> понять какой способ выбрать?
Сборник рабочего кода Процедур и Функций DelPhi
http://validcoderepo.narod.ru/
Pcrepair вне форума Ответить с цитированием
Старый 12.09.2013, 00:12   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,455
По умолчанию

Просто правильно использовать TEncoding и все.
Показывайте, как вы его используете.
Человек_Борща вне форума Ответить с цитированием
Старый 13.09.2013, 21:01   #3
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 243
По умолчанию

TEncoding используется строго по стандарту

есть гр. Алексеев(он же GunSmoker) и есть у него выложенный пример использования mlang.dll в 3-х вариантах. У меня используется 3-й вариант (автоопределение кодировки с использованием частотного анализа). и все работает в 99% случаев (кроме приведенного в топики примера и когда страница очень маленькая и тогда функция выдает исключение (там Я вставил обработку исключений и принудительное присвоение 1251 в одном месте одной функции, но речь не об этом).

так вот все таки иногда ошибается и mlang.dll. но при этом, на этой странице не ошибается TEncoding (используется значение ответа сервера о используемой кодировке страницы), зато TEncoding ошибается в до 10% случаев.

сейчас надо применить следующую обработку:
- скачать страницу в RawByteString
- проверить в теге TITLE, получилось ли 1251
- если нет применить TEncoding

такая структура обработки позволит повысить результат возможно до 99.99%

Ну теперь то всем уже понятно для чего мне нужно определить кодировку символов между тегами TITLE?
Сборник рабочего кода Процедур и Функций DelPhi
http://validcoderepo.narod.ru/
Pcrepair вне форума Ответить с цитированием
Старый 13.09.2013, 22:12   #4
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Попробуйте так: выбираете TITLE, применяете к нему TEncoding и тут же проводите обратную операцию с TEncoding, полученный результат сравниваете с уже имеющимся. Точно совпадение говорит о правильно выбранной кодировке. Затратно по ресурсам, но строка не большая, проблем не должно возникнуть.
ReportCube вне форума Ответить с цитированием
Старый 15.09.2013, 13:38   #5
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 243
По умолчанию

имеется ввиду запустить цикл с перебором значений кодировки(650001, 1251, 20866 и далее) и если строка из ТИТЛ в формате RawByteString после кодирования-декодирования совпадет со строкой из функции, то кодировка та самая?
под это есть какая то теоретическая база?
Сборник рабочего кода Процедур и Функций DelPhi
http://validcoderepo.narod.ru/
Pcrepair вне форума Ответить с цитированием
Старый 15.09.2013, 13:51   #6
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Увы, никакой теоретической базы под это нет. Попробуйте
ReportCube вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение высоты страницы. leny JavaScript, Ajax 3 14.01.2011 03:06
смена кодовой страницы dbf на "0" в VBA (Excel 2003) xamillion Microsoft Office Excel 9 11.11.2010 01:23
изменение кодовой страницы dbf-файла (foxPro) Ks2010 БД в Delphi 19 13.08.2010 11:33
Загрузка веб страницы usersat Общие вопросы Delphi 1 13.05.2010 16:51
Определение перенаправления страницы мимо Работа с сетью в Delphi 0 26.03.2010 13:03


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS