powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / indyserver как задать кодировку?
8 сообщений из 8, страница 1 из 1
indyserver как задать кодировку?
    #38101888
imobile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
builder xe2
перевожу пример с делфи на си
В браузере все русское отображается как ???????????????????????
http://web-serwer.googlecode.com/svn-history/r2/trunk/idHTTPServer/Main.~pas
Вот упрощенный пример
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
void __fastcall TForm72::Button1Click(TObject *Sender)
{

 try{
  IdHTTPServer1->DefaultPort=StrToInt(Edit1->Text);
  IdHTTPServer1->Active=true;
  Button1->Enabled=false;
  Edit1->Enabled=false;
}  catch(...)
  {
   ShowMessage("Ошибка");
  }
}
void __fastcall TForm72::IdHTTPServer1CommandGet(TIdContext *AContext, TIdHTTPRequestInfo *ARequestInfo,
		  TIdHTTPResponseInfo *AResponseInfo)
{
//версия сервера
AResponseInfo->Server="begin_end`s 1.0";
//запрет на кэширование в браузере
AResponseInfo->CacheControl="no-cache";
  try {
   AResponseInfo->ContentText="ура работает";
  }
  catch(...)
  {
   ShowMessage("Ошибка");
  }
}

Как наладить кодировку? Все что нашел в интернете сводится к вопросам, но не к ответам.
Задача: выводить UnicodeString напрямую.
Код: plaintext
1.
2.
UnicodeString a="Привет";
   AResponseInfo->ContentText=a;
...
Рейтинг: 0 / 0
indyserver как задать кодировку?
    #38101907
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
imobileКак наладить кодировку?
Каким-то образом тебе надо заставить сервер отдавать заголовок Content-type, включая charset.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
indyserver как задать кодировку?
    #38101996
imobile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovimobileКак наладить кодировку?
Каким-то образом тебе надо заставить сервер отдавать заголовок Content-type, включая charset.
Я пытался как в примере если вас правильно понял
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
AnsiString htm01="<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\"><title>Страница управления сервером</title></head><body bgcolor=\"#C0C0C0\"><font size=\"2\" face=\"Arial\"><input type=\"text\" name=\"port\" size=\"14\" disabled value=\"";
UnicodeString htm02="\"> порт<form method=\"POST\"><p><input type=\"checkbox\" name=\"useauth\" value=\"ON\" ";
UnicodeString htm03=">использовать авторизацию<br><input type=\"text\" name=\"ausername\" size=\"21\" value=\"";
UnicodeString htm04="\"> пользователь<br><input type=\"text\" name=\"apassword\" size=\"21\" value=\"";
UnicodeString htm05="\"> пароль</p><p><input type=\"text\" name=\"indexfile\" size=\"14\" value=\"";
UnicodeString htm06="\"> индексный файл в папке проекта</p><p><input type=\"checkbox\" name=\"usemanage\" value=\"ON\" ";
UnicodeString htm07=">разрешить удалённое управление этим окном<br><input type=\"text\" name=\"managepage\" size=\"21\" value=\"";
UnicodeString htm08="\"> страница управления <br><input type=\"text\" name=\"musername\" size=\"21\" value=\"";
UnicodeString htm09="\"> пользователь<br><input type=\"text\" name=\"mpassword\" size=\"21\" value=\"";
UnicodeString htm10="\"> пароль</p><p><input type=\"checkbox\" name=\"offserver\" value=\"ON\" ";
UnicodeString htm11=">выключить сервер</p><p><input type=\"submit\" value=\"Применить\" style=\"font-family: Arial\"></p></font></form><p><font face=\"Courier\"><b>Информация о сервере</b>:</p>";

	  AResponseInfo->ContentEncoding="windows-1251";

Но последняя строчка никак не влияет.
...
Рейтинг: 0 / 0
indyserver как задать кодировку?
    #38102039
imobile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю данные должны передаваться в какой-то кодировке, но не unicode. Иначе сервер посылает вопросы. В какой?
...
Рейтинг: 0 / 0
indyserver как задать кодировку?
    #38102108
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
imobileВ какой?
Практически в любой. Но ты должен клиенту эту кодировку сообщить и сообщить правильно.
Возьми сниффер и посмотри что на самом деле пересылается.

И, кстати, что за огрызок мета-тэга в твоём html?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
indyserver как задать кодировку?
    #38102434
imobile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovimobileВ какой?
Практически в любой. Но ты должен клиенту эту кодировку сообщить и сообщить правильно.
Возьми сниффер и посмотри что на самом деле пересылается.

И, кстати, что за огрызок мета-тэга в твоём html?..
Это пример я скопировал, чтоб разобраться.
Сниффер показывает, что все английское приходит на отлично, а вместо всего русского 0х3f. Выходит сервер отказывается посылать все русское.
...
Рейтинг: 0 / 0
indyserver как задать кодировку?
    #38102457
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
imobileВыходит сервер отказывается посылать все русское.
Вот и смотри где он заменяет правильные буквы на мусор. Индия идёт с исходниками.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
indyserver как задать кодировку?
    #38107535
imobile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovimobileВыходит сервер отказывается посылать все русское.
Вот и смотри где он заменяет правильные буквы на мусор. Индия идёт с исходниками.
Я еще плохо разбираюсь. Провозился - ничего не получилось. Даже не знаю как искать, тросировщиком не получается.
Вобщем выяснил. От инди не зависит, хоть новая, хоть которая идет с хе2 или хе3.
AResponseInfo->ContentEncodin влияет только на AResponseInfo->ContentStream
Причем последняя не заменяет на 0x3f, даже если не укажешь кодировку(только отображается неправильно) Но AResponseInfo->ContentStream работает с файлами, а мне надо динамически, если хост отправил запрос к такой странице, то послать ему то-то.
Думал перейти на ICS, но не нашел примеров на билдере, а переделать на с++
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
uses 
 SysUtils, OverbyteIcsHttpAppServer; 

type 
 TUrlHandlerHelloToday = class(TUrlHandler) 
public 
procedure Execute; override; 
end; 

implementation 

procedure TUrlHandlerHelloToday.Execute; 
begin 
 AnswerPage(’’, ’’, 'HelloToday.html', nil, ['DateTime', DateTimeToStr(Now)]); 
 Finish; 
end;

не получается. AnswerPage содержится в TUrlHandler Может кто подскажет?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / indyserver как задать кодировку?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]