fpweb встроенный web сервер

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

fpweb встроенный web сервер

Сообщение *Rik* » 07.09.2023 14:54:36

Всем привет.

Мне понадобился встроенный web сервер, экспериментирую с TFPHttpServer из пакета fpweb.
Я в web не шарю совсем, пробую сделать форму и первая загвоздка:

В label русский текст приходится конвертировать в win1251, что нужно сделать, чтобы UTF8 понимал? Иначе кракозяблы вылазят.

Код: Выделить всё
rocedure TForm1.DoHandleRequest(Sender: TObject;
  var ARequest: TFPHTTPConnectionRequest;
  var AResponse: TFPHTTPConnectionResponse);
begin
  FURL := Arequest.URL;
  if FURL = '/sform.html' then
  begin
    AResponse.Contents.Add('<form id="form" action="' + ARequest.URI + '" method="POST" enctype="multipart/form-data">');
    AResponse.Contents.Add('<label for="name">' + UTF8ToCP1251('Введите') + '</label>');
    AResponse.Contents.Add('<input type="text" name="input" />');
     AResponse.Contents.Add('</form>');
  end;
  FServer.Synchronize(nil, @ShowURL);
end;
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 427
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: fpweb встроенный web сервер

Сообщение grot » 07.09.2023 16:27:01

AResponse.Headers.Add(...);

Найдите сами в описании HTTP протокола, что поставить вместо ... ( будет что-то типа encoding=utf8 )...
grot
новенький
 
Сообщения: 75
Зарегистрирован: 13.02.2010 16:33:03

Re: fpweb встроенный web сервер

Сообщение delphius » 07.09.2023 17:17:52

Я в web не шарю совсем, пробую сделать форму и первая загвоздка:
В label русский текст приходится конвертировать в win1251, что нужно сделать, чтобы UTF8 понимал? Иначе кракозяблы вылазят

Я не буду говорить конкретно за эту ситуацию, но в целом ситуация с символами, строками, их типом, системной кодировкой и кодировкой файла исходного кода?! и их магическим переплетением во время компиляции и в рантайме была и до сих пор остаётся очень запутанной, во всяком случае в fpc. Статья здесь на сайте до сих пор не утратила актуальности.
И к web конкретно это не имело вообще никакого отношения :roll:
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: fpweb встроенный web сервер

Сообщение Sharfik » 07.09.2023 17:35:14

Код страницы должен в базе минимум так выглядеть. Браузер будет считывать meta тег и ставить кодировку UTF8.
Код: Выделить всё
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
   <title>Jadwiga</title>
</head>
<body>

<!-- plugin section -->

<!-- /plugin section -->

</body>
</html>


delphius писал(а):была и до сих пор остаётся очень запутанной,

хз... по моему все просто и легко. На улице функции ОС преимущественно WInCP кодировку передают, внутри FPC UTF8. Если FPC 3.0 и выше, то конвертирование входящего с улицы он делает автоматом. Исходники, если кто то с дуру не редактировал в Блокноте, то будут UTF8. Все стабильно работает. Laz 2.0.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 766
Зарегистрирован: 20.07.2013 01:04:30

Re: fpweb встроенный web сервер

Сообщение delphius » 07.09.2023 17:54:18

Sharfik писал(а):Все стабильно работает

Lazarus не пользуюсь, только fpc из под VSCode :roll:
В основном говорю по опыту решения проблем с кроссплатформенным выводом в консоль на русском и кривой работы сторонних библиотек.
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: fpweb встроенный web сервер

Сообщение Снег Север » 07.09.2023 18:07:25

delphius писал(а):Lazarus не пользуюсь, только fpc из под VSCode
В основном говорю по опыту решения проблем с кроссплатформенным выводом в консоль на русском и кривой работы сторонних библиотек.

Кто же доктор тем, кто намеренно "стреляет себе в ногу"???
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2997
Зарегистрирован: 27.11.2007 16:14:47

Re: fpweb встроенный web сервер

Сообщение delphius » 07.09.2023 19:22:13

Снег Север писал(а):кто намеренно "стреляет себе в ногу"???

Спасибо за ценный комментарий))))
Ну не нужна мне lcl, а тащить lazutf8 я не хочу, все остальное, включая gdb есть.
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: fpweb встроенный web сервер

Сообщение Снег Север » 08.09.2023 07:09:51

delphius писал(а):Ну не нужна мне lcl, а тащить lazutf8 я не хочу, все остальное, включая gdb есть.

Про тип приложения лазаря "консольное" вы не слыхали? А тащить lazutf8 любому вменяемому разработчику абсолютно обязательно. Иначе вы получаете - то, что получаете, самострел в ногу.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2997
Зарегистрирован: 27.11.2007 16:14:47

Re: fpweb встроенный web сервер

Сообщение delphius » 08.09.2023 11:39:16

Снег Север писал(а):Про тип приложения лазаря "консольное" вы не слыхали?

Ваш сарказм заслуживает уважения, но мне для бэкэнда и для консольных утилит, 99 процентов вывода которых идут на английском, всего вполне хватает. А цепляться за Лазаря только из-за этого я пока не планирую. Для форм и визуальных компонентов ему альтернативы нормальной нет, с этим абсолютно не спорю.
В остальном до сих пор разработчики fpc и Lazarus убеждают в том, что fpc может полноценно работать и без Lazarus.

Кстати, никто lcl или lazutf8 без ide не прикручивал к fpc? Надо попробовать...
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: fpweb встроенный web сервер

Сообщение Снег Север » 08.09.2023 12:51:58

delphius писал(а):Кстати, никто lcl или lazutf8 без ide не прикручивал к fpc? Надо попробовать...

Никто не пробовал кататься на лыжах по асфальту? Попробуйте...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2997
Зарегистрирован: 27.11.2007 16:14:47

Re: fpweb встроенный web сервер

Сообщение *Rik* » 08.09.2023 13:27:58

Уважаемые коллеги по цеху, я приложил 2 примера, если вы знаете как сделать изменения, чтобы по умолчанию страницы были c UTF-8, поправьте пример, пожалуйста.

Этот пример взят отсюда: https://wiki.lazarus.freepascal.org/fpWeb_Tutorial/ru
после сборки и запуска в браузере заходим на localhost:8080 и смотрим результат
для останова сервера жмем в Lazarus кнопку Остановить
https://disk.yandex.com.am/d/OxhvSvFsw41lMQ

Это пример с формой и встроенным web сервером, после сборки в форме нажимаем кнопку Start, после этого в браузере набираем localhost:8080/sform.html
Для останова сервера, кнопка Stop
https://disk.yandex.com.am/d/JpPscDzpGtp0pQ

Примеры сделаны в Lazarus 2.2.6, Linux 64 x86
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 427
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: fpweb встроенный web сервер

Сообщение delphius » 08.09.2023 15:36:55

Снег Север писал(а):Никто не пробовал кататься на лыжах по асфальту? Попробуйте...

Думал форум программистов, оказалось форум юмористов)
.
Извините за оффтоп.
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: fpweb встроенный web сервер

Сообщение *Rik* » 08.09.2023 18:38:19

Могу предполагать, что проблема из-за того что header не передается, в котором можно charset прописать, только код формы.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 427
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: fpweb встроенный web сервер

Сообщение delphius » 08.09.2023 19:14:19

*Rik* писал(а):проблема из-за того что header не передается, в котором можно charset прописать


Так а кто мешает почекать заголовки через инструменты разработчика или через сторонние сервисы/софт типа fiddler/wireshark?
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: fpweb встроенный web сервер

Сообщение Ichthyander » 08.09.2023 19:44:22

Даете мало информации. Тут варианты могут быть разные.
1. Кодировка страницы в HTML коде не указана? (Можно пример HTML страницы?)
2. И/или кириллица код кодируется вместо UTF8 в ANSI (или как вариант вообще неправильно кодируется).
От этого тогда и будем отталкиваться
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 675
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53

Рейтинг@Mail.ru