Страница 1 из 2
fpweb встроенный web сервер
Добавлено: 07.09.2023 13:54:36
*Rik*
Всем привет.
Мне понадобился встроенный 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;
Re: fpweb встроенный web сервер
Добавлено: 07.09.2023 15:27:01
grot
AResponse.Headers.Add(...);
Найдите сами в описании HTTP протокола, что поставить вместо ... ( будет что-то типа encoding=utf8 )...
Re: fpweb встроенный web сервер
Добавлено: 07.09.2023 16:17:52
delphius
Я в web не шарю совсем, пробую сделать форму и первая загвоздка:
В label русский текст приходится конвертировать в win1251, что нужно сделать, чтобы UTF8 понимал? Иначе кракозяблы вылазят
Я не буду говорить конкретно за эту ситуацию, но в целом ситуация с символами, строками, их типом, системной кодировкой и кодировкой файла исходного кода?! и их магическим переплетением во время компиляции и в рантайме была и до сих пор остаётся очень запутанной, во всяком случае в fpc.
Статья здесь на сайте до сих пор не утратила актуальности.
И к web конкретно это не имело вообще никакого отношения

Re: fpweb встроенный web сервер
Добавлено: 07.09.2023 16:35:14
Sharfik
Код страницы должен в базе минимум так выглядеть. Браузер будет считывать 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.
Re: fpweb встроенный web сервер
Добавлено: 07.09.2023 16:54:18
delphius
Sharfik писал(а):Все стабильно работает
Lazarus не пользуюсь, только fpc из под VSCode

В основном говорю по опыту решения проблем с кроссплатформенным выводом в консоль на русском и кривой работы сторонних библиотек.
Re: fpweb встроенный web сервер
Добавлено: 07.09.2023 17:07:25
Снег Север
delphius писал(а):Lazarus не пользуюсь, только fpc из под VSCode
В основном говорю по опыту решения проблем с кроссплатформенным выводом в консоль на русском и кривой работы сторонних библиотек.
Кто же доктор тем, кто намеренно "стреляет себе в ногу"???
Re: fpweb встроенный web сервер
Добавлено: 07.09.2023 18:22:13
delphius
Снег Север писал(а):кто намеренно "стреляет себе в ногу"???
Спасибо за ценный комментарий))))
Ну не нужна мне lcl, а тащить lazutf8 я не хочу, все остальное, включая gdb есть.
Re: fpweb встроенный web сервер
Добавлено: 08.09.2023 06:09:51
Снег Север
delphius писал(а):Ну не нужна мне lcl, а тащить lazutf8 я не хочу, все остальное, включая gdb есть.
Про тип приложения лазаря "консольное" вы не слыхали? А тащить lazutf8 любому вменяемому разработчику абсолютно обязательно. Иначе вы получаете - то, что получаете, самострел в ногу.
Re: fpweb встроенный web сервер
Добавлено: 08.09.2023 10:39:16
delphius
Снег Север писал(а):Про тип приложения лазаря "консольное" вы не слыхали?
Ваш сарказм заслуживает уважения, но мне для бэкэнда и для консольных утилит, 99 процентов вывода которых идут на английском, всего вполне хватает. А цепляться за Лазаря только из-за этого я пока не планирую. Для форм и визуальных компонентов ему альтернативы нормальной нет, с этим абсолютно не спорю.
В остальном до сих пор разработчики fpc и Lazarus убеждают в том, что fpc может полноценно работать и без Lazarus.
Кстати, никто lcl или lazutf8 без ide не прикручивал к fpc? Надо попробовать...
Re: fpweb встроенный web сервер
Добавлено: 08.09.2023 11:51:58
Снег Север
delphius писал(а):Кстати, никто lcl или lazutf8 без ide не прикручивал к fpc? Надо попробовать...
Никто не пробовал кататься на лыжах по асфальту? Попробуйте...
Re: fpweb встроенный web сервер
Добавлено: 08.09.2023 12:27:58
*Rik*
Уважаемые коллеги по цеху, я приложил 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
Re: fpweb встроенный web сервер
Добавлено: 08.09.2023 14:36:55
delphius
Снег Север писал(а):Никто не пробовал кататься на лыжах по асфальту? Попробуйте...
Думал форум программистов, оказалось форум юмористов)
.
Извините за оффтоп.
Re: fpweb встроенный web сервер
Добавлено: 08.09.2023 17:38:19
*Rik*
Могу предполагать, что проблема из-за того что header не передается, в котором можно charset прописать, только код формы.
Re: fpweb встроенный web сервер
Добавлено: 08.09.2023 18:14:19
delphius
*Rik* писал(а):проблема из-за того что header не передается, в котором можно charset прописать
Так а кто мешает почекать заголовки через инструменты разработчика или через сторонние сервисы/софт типа fiddler/wireshark?
Re: fpweb встроенный web сервер
Добавлено: 08.09.2023 18:44:22
Ichthyander
Даете мало информации. Тут варианты могут быть разные.
1. Кодировка страницы в HTML коде не указана? (Можно пример HTML страницы?)
2. И/или кириллица код кодируется вместо UTF8 в ANSI (или как вариант вообще неправильно кодируется).
От этого тогда и будем отталкиваться