Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перекодировка UTF8, Не правильно перекодирует страницу нета. 
:(
    Опции темы
SkyAngel
Дата 9.6.2009, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 11.1.2009
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Вот так выглядит исходный код страницы, когда я получаю её при помощи функции IdHttp.get.:
Код

'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'#$D#$A#$D#$A'<html>
'#$D#$A#9'<head>'#$D#$A#9#9'<title>Travian ru1</title>'#$D#$A#9#9'<meta name="content-language" content="ru" />
'#$D#$A#9#9'<meta http-equiv="cache-control" content="max-age=0" />'#$D#$A#9#9'<meta http-equiv="imagetoolbar" content="no" />
'#$D#$A#9#9'<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
'#$D#$A#9#9'<script src="mt-core.js?azg" type="text/javascript"></script>'#$D#$A#9#9'
<script src="mt-more.js?azg" type="text/javascript"></script>'#$D#$A#9#9'
<script src="unx.js?azg" type="text/javascript"></script>'#$D#$A#9#9'
<script src="new.js?azg" type="text/javascript"></script>'#$D#$A#9#9'<link href="img/unx.css?azg" rel="stylesheet" type="text/css" />
'#$D#$A#9#9'<link href="img/img.css?azg" rel="stylesheet" type="text/css" />
'#9#9#$D#$A#9#9#9#9'<link href="img/ru/lang.css?azg" rel="stylesheet" type="text/css" />
'#$D#$A'</head>'#$D#$A#$D#$A'<body onload="initCounter()">'#$D#$A#$D#$A'<div id="dynamic_header" class="norm">
'#$D#$A#9'</div>'#$D#$A#$D#$A#$D#$A'<div id="header"></div>'#$D#$A#$D#$A'<div id="mid">'#$D#$A#9'<div id="sleft">
'#$D#$A#$D#$A#9#9#9#9'<a href="http://www.travian.ru/"><img id="logo" src="img/x.gif" alt="Травиан" />
</a>'#$D#$A#9#9'<p>'#$D#$A#9#9#9'<a href="http://www.travian.ru/index.php">Главная</a>'#$D#$A#9#9#9'
<a href="http://www.travian.ru/anleitung.php">Справка</a>'#$D#$A#9#9#9'<a href="login.php">Вход</a>'#$D#$A#9#9#9'
<a href="anmelden.php">Регистрация</a>'#$D#$A#9#9#9'<br /><br />'#$D#$A#$D#$A#9#9#9' '#$D#$A#9#9#9#9'
<a href="http://forum.travian.ru/" target="_blank">Форум</a>'#$D#$A#9#9#9#$D#$A#9#9#9'
<a href="http://www.travian.ru/chat/?chatname=T_guest???" target="_blank">Чат</a>'#$D#$A#9#9#9'<br />
<br />'#$D#$A#9#9#9'<a href="http://www.travian.ru/impressum.php">Контакты</a>'#$D#$A#9#9#9'
<a href="support.php">Обратная связь</a>'#$D#$A#9#9'</p>'#$D#$A#9'</div>'#$D#$A#$D#$A'<div id="content">
'#$D#$A#$D#$A#$D#$A'<div class=login>'#$D#$A#$D#$A#9'<h1><img class="img_login" src="img/x.gif" alt="Войти в игру" />
</h1>'#$D#$A#9'<h5><img class="img_u04" src="img/x.gif" alt="Вход" /></h5>'#$D#$A#9'<p class="f9">
Чтобы войти в игру необходимо разрешение "cookies" в Вашем браузере. Если Вы не единственный пользователь компьютера, 
то при выходе из сеанса нажмите на "Выход".</p>'#$D#$A#9#$D#$A#9'<form method="post" name="snd" action="dorf1.php">
'#$D#$A#9'<input type="hidden" name="w" value="" />'#$D#$A#9'<input type="hidden" name="login" value="1244574899" />
'#$D#$A#9#$D#$A#9'<table class="dashed">'#$D#$A#9#9'<colgroup>'#$D#$A#9#9#9'<col class="w40" />'#$D#$A#9#9#9'<col class="w60" />
'#$D#$A#9#9'</colgroup>'#$D#$A#9#9'<tr>'#$D#$A#9#9#9'<td><label>Имя:</label></td>'#$D#$A#9#9#9'<td>
<input class="fm fm110" type="text" name="eaa7e13" value="" maxlength="15" /> <span class="e f7"> 
</span></td>'#$D#$A#9#9'</tr>'#$D#$A#9#9'<tr>'#$D#$A#9#9#9'<td><label>Пароль:</label></td>'#$D#$A#9#9#9'<td>
<input class="fm fm110" type="password" name="e0a448f" value="" maxlength="20" /> <span class="e f7"> </span>
</td>'#$D#$A#9#9'</tr>'#$D#$A#9'</table>'#$D#$A#9#$D#$A#9'<input type="hidden" name="ea2645d" value="" />
'#$D#$A#9#$D#$A#9'<p class="center">'#9#$D#$A#9#9'<input type="hidden" name="ea2645d" value="" />'#$D#$A#9#9#$D#$A#9#9'
<input'#$D#$A#9#9#9'type'#9'= "image"'#$D#$A#9#9#9'value'#9'= "login"'#$D#$A#9#9#9'name'#9'= 


А вот так должен выглядеть этот код:
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html> 
    <head> 
        <title>Travian ru1</title> 
        <meta name="content-language" content="ru" /> 
        <meta http-equiv="cache-control" content="max-age=0" /> 
        <meta http-equiv="imagetoolbar" content="no" /> 
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
        <script src="mt-core.js?azg" type="text/javascript"></script> 
        <script src="mt-more.js?azg" type="text/javascript"></script> 
        <script src="unx.js?azg" type="text/javascript"></script> 
        <script src="new.js?azg" type="text/javascript"></script> 
        <link href="img/unx.css?azg" rel="stylesheet" type="text/css" /> 
        <link href="img/img.css?azg" rel="stylesheet" type="text/css" />        
                <link href="img/ru/lang.css?azg" rel="stylesheet" type="text/css" /> 
</head> 
 
<body onload="initCounter()"> 
 
<div id="dynamic_header" class="norm"> 
    </div> 
 
 
<div id="header"></div> 
 
<div id="mid"> 
    <div id="sleft"> 
 
                <a href="http://www.travian.ru/"><img id="logo" src="img/x.gif" alt="Травиан" /></a> 
        <p> 
            <a href="http://www.travian.ru/index.php">Главная</a> 
            <a href="http://www.travian.ru/anleitung.php">Справка</a> 
            <a href="login.php">Вход</a> 
            <a href="anmelden.php">Регистрация</a> 
            <br /><br /> 
 
             
                <a href="http://forum.travian.ru/" target="_blank">Форум</a> 
            
            <a href="http://www.travian.ru/chat/?chatname=ru1|LeVoRK" target="_blank">Чат</a> 
            <br /><br /> 
            <a href="http://www.travian.ru/impressum.php">Контакты</a> 
            <a href="support.php">Обратная связь</a> 
        </p> 
    </div> 
 
<div id="content"> 
 
 
<div class=login> 
 
    <h1><img class="img_login" src="img/x.gif" alt="Войти в игру" /></h1> 
    <h5><img class="img_u04" src="img/x.gif" alt="Вход" /></h5> 
    <p class="f9">Чтобы войти в игру необходимо разрешение "cookies" в Вашем браузере. Если Вы не единственный пользователь компьютера, то при выходе из сеанса нажмите на "Выход".</p> 
    
    <form method="post" name="snd" action="dorf1.php"> 
    <input type="hidden" name="w" value="" /> 
    <input type="hidden" name="login" value="1244575370" /> 
    
    <table class="dashed"> 
        <colgroup> 
            <col class="w40" /> 
            <col class="w60" /> 
        </colgroup> 
        <tr> 
            <td><label>Имя:</label></td> 
            <td><input class="fm fm110" type="text" name="eaa7e13" value="LeVoRK" maxlength="15" /> <span class="e f7"> </span></td> 
        </tr> 
        <tr> 
            <td><label>Пароль:</label></td> 
            <td><input class="fm fm110" type="password" name="e0a448f" value="********" maxlength="20" /> <span class="e f7"> </span></td> 
        </tr> 
    </table> 
    
    <input type="hidden" name="ea2645d" value="963870d90c" /> 
    
    <p class="center">    
        <input type="hidden" name="ea2645d" value="963870d90c" /> 
        
        <input

            type    = "image"

            value    = "login"

            name    = "s1"

            onclick = "xy();"

            id        = "btn_login"

            class    = "dynamic_img"

            src        = "img/x.gif"

            alt        = "Кнопка входа"

        />    
        
    </p> 
    </form>        
</div>  
</div>  
<div id="sright"> 


И вот собственно сам вопрос - как правильно декодировать страницу, чтобы увидеть нормальное её содержание?
Очень благодарен буду за ответ.
PM MAIL ICQ Skype   Вверх
Keeper89
Дата 9.6.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Используйте Utf8ToAnsi.


--------------------
PM MAIL WWW   Вверх
SkyAngel
Дата 9.6.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 11.1.2009
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Пытался, всё равно нормально не получается.
Ещё предложения?

P.S. просто для того, кто будет помогать - страница s1.travian.ru
PM MAIL ICQ Skype   Вверх
kami
Дата 10.6.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Не пользую Indy.
Но, к примеру, #$D#$A#$D#$A  должно быть переделано в CRLF (т.е. символы #13#10).
Если есть стандартная для индей функция - это замечательно.
Если нет - пробегать по всему тексту и заменять. Немного неблагодарное дело - 3 символа (или 2 в случае #9) заменять на 1.
Хотя и быстрое.

Добавлено через 30 секунд
вроде, #9 - это TAB...

Добавлено через 9 минут и 36 секунд
гы.
Вот что значит - не работаю с тырнетом smile
UTF8ToAnsiSmart
PM MAIL WWW   Вверх
Keeper89
Дата 10.6.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



У меня все прекрасно работает через следующий код (без вашей абракадабры):
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text := UTF8ToAnsi(idHTTP1.Get('http://s1.travian.ru/'));
end;

А в 2009 Delphi, на сколько я знаю, даже в ANSI переводить не надо, там компоненты Unicode поддерживают.
Прикрепляю картинку.

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  1.JPG 34,91 Kb


--------------------
PM MAIL WWW   Вверх
SkyAngel
Дата 10.6.2009, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 11.1.2009
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Однако. Так оно и работает. Но если забирать это всё в строку, то остаются символы форматирования. Вот тогда такой вопрос-  как их убрать?
PM MAIL ICQ Skype   Вверх
Keeper89
Дата 10.6.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Забираю в строку:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  S: AnsiString;
begin
  S := UTF8ToAnsi(idHTTP1.Get('http://s1.travian.ru/'));
  ShowMessage(S);
end;

Все слова на кириллице снова прекрасно отображаются, из спецсимволов только переход на сл. строку (#13 и #10), . Их надо убрать?

Это сообщение отредактировал(а) Keeper89 - 10.6.2009, 15:15


--------------------
PM MAIL WWW   Вверх
SkyAngel
Дата 10.6.2009, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 11.1.2009
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Keeper89, если выводить слова - то всё отлично. Однако, если во время отладки проверить состояние строки - там можно найти много абракадабры. Но это ладно. Большую часть я тупым способом убрал. А именно запихнул всё в TMemo, а потом прочитал оттуда по строкам всё. Однако местами остаются символы #9. Когда я решил просто просканить весь текст на эти символы и поудалять - обнаружил чудо, он не находит их! Собственно, если вам не трудно, напишите алгоритм, как Вы очистили бы исходный код страницы от лишних символов форматирования.

P.S. Работаю на CodeGear 2009. Переформатирование не произвожу. Просто присвоение.

Это сообщение отредактировал(а) SkyAngel - 10.6.2009, 15:27
PM MAIL ICQ Skype   Вверх
Keeper89
Дата 10.6.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Я бы не проверял содержимое строки в IDE. 
Опишите, как вы работаете и что делаете с полученной строкой, возможно ничего менять не нужно.


--------------------
PM MAIL WWW   Вверх
SkyAngel
Дата 10.6.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 11.1.2009
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Дело в том, что у меня уже была программа, получающая именно эту страницу и успешно залогинившаяся в ней. Однако, из-за новой версии я не могу залогиниться старым способом. Но вообще, я хотел бы просто очистить эту строку от лишних частей ).
PM MAIL ICQ Skype   Вверх
Keeper89
Дата 10.6.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Цитата(SkyAngel @  10.6.2009,  22:54 Найти цитируемый пост)
Но вообще, я хотел бы просто очистить эту строку от лишних частей ). 

Почему я спрашиваю про дальнейшие действия - не понятно, откуда берутся эти спецзнаки. Любой способ у меня работает нормально. Может стоит лучше посмотреть процедуру входа а сайте?


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.