Русская кодировка в HTTP запросах ESP8266WebServer
- Войдите на сайт для отправки комментариев
Пнд, 27/06/2022 - 21:03
Доброго времени суток. Продолжаю разбираться с насущными на данном этапе для меня вопросами. Настраиваю HTTP ответы/запросы на ESP8266. Допустим в первом случае хочу выводить статус реле (индикатора, светодиода) вместе с каким-то коментарием на русском языке. Или ту же страницу 200 отсылать с русским текстом. Чтобы в браузере вывелось что-то типа:
void handleRoot() { server.send(200, "text/plain", "Большой привет от esp8266!"); }
Или:
// Обработка HTTP-запросов server.on("/relay_switch", [](){ // При HTTP запросе вида адрес/relay_switch server.send(200, "text/plain", relay_switch()+" переключили"); // Отдаём клиенту код успешной обработки запроса, сообщаем, что формат ответа текстовый и возвращаем результат выполнения функции relay_switch }); server.on("/relay_status", [](){ // При HTTP запросе вида адрес/relay_status server.send(200, "text/plain", relay_status()+" ага "); // Отдаём клиенту код успешной обработки запроса, сообщаем, что формат ответа текстовый и возвращаем результат выполнения функции relay_status });
По идее в файле ESP8266WebServer.h за это отвечают следующие строки:
typedef struct { HTTPUploadStatus status; String filename; String name; String type; // String inputstream; // типа кодировка вывода сообщений, которую я пробовал добавить size_t totalSize; // total size of uploaded file so far size_t currentSize; // size of data currently in buf size_t contentLength; // size of entire post request, file size + headers and other request data. uint8_t buf[HTTP_UPLOAD_BUFLEN]; } HTTPUpload;
Тоесть тут описывается только три параметра, а я пробовал добавить четвертый. По идее нужно его ещё где-то прописать, но не могу понять где.
Возможно я лезу в дебри, и все гораздо проще. И не нужно править библиотеку, а этот параметр прописывается где-то в другом месте.
В чем вопрос то? Я не понял.
http://htmlbook.ru/html/meta/charset
В чем вопрос то? Я не понял.
Да, плохой из меня объясняльщик )))
Как вывести в браузере на русском вот эту запись:
И ещё парочка примеров в первом посте. На англ все пишет нормально. На русском пишет кракозябры.
И как это передать в HTTP реквесте? Вернее для ардуино в HTTP реквесте
Тоесть варианты типа:
не работают
Для кодировки есть специальный тег. Почитай за структуру html-документа. Это не сложно и не долго. ))))
"text/html; charset=utf-8"
Для кодировки есть специальный тег. Почитай за структуру html-документа. Это не сложно и не долго. ))))
Достаточно в хроме нажать F12 даже на этой странице и посмотреть как оформлен head. Там всё есть для нормального отображения. И строка ua6em присутствует.
Для кодировки есть специальный тег. Почитай за структуру html-документа. Это не сложно и не долго. ))))
Достаточно в хроме нажать F12 даже на этой странице и посмотреть как оформлен head. Там всё есть для нормального отображения. И строка ua6em присутствует.
а ты думаешь откуда я скопировал )))
а ты думаешь откуда я скопировал )))
:-)
Как вывести в браузере на русском вот эту запись:
Как простой вариант попробовать:
Или например вот так еще (мне кажется более правильно):
А вообще изучи структуру страницы html...
"text/plain; charset=utf-8"
"text/html; charset=utf-8"
То, что нужно ))) А я никак не мог придумать, куда вставить. Если вы обратили внимание, то ставил отдельным параметром, выносил за кавычки. Это конечно мое упущение знаний HTTP запросов/ответов.
Для кодировки есть специальный тег. Почитай за структуру html-документа. Это не сложно и не долго. ))))
Спасибо за подсказку, но про этот параметр я знаю. Вопрос был в том, что я НЕ ЗНАЛ, КУДА ЕГО ВСТАВИТЬ.
"text/plain; charset=utf-8"
Вам тоже спасибо. Коротко и ясно. Подробности свей ошибки написал постом выше
я НЕ ЗНАЛ, КУДА ЕГО ВСТАВИТЬ.
- Гусары! Молчать!
(ведь вроде уже большой мальчик?)
я НЕ ЗНАЛ, КУДА ЕГО ВСТАВИТЬ.
- Гусары! Молчать!
(ведь вроде уже большой мальчик?)
Ну это кто о чем подумал )))