ESP / HTML недопустимые символы, если строка состоит из 11 или более символов - PullRequest
0 голосов
/ 03 августа 2020

Итак, моя проблема в том, что, как сказано в заголовке, моя страница html не может отображать строки с 11 или более символами, и они отображаются как - L1�? , я не знаю, что это за проблема: строки не используют никаких специальных символов и состоят только из букв английского sh, что может вызвать эту проблему, если строки имеют длину 11 символов или более? Это код:

server.on("/", HTTP_GET, [] (AsyncWebServerRequest *request) {

  AsyncResponseStream *response = request->beginResponseStream("text/html");

  response->print("<!DOCTYPE html><html><head>");
  response->print("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><style>body{background-color: #92a8d1;}</style></head><body>");
  response->print("<img src=\"0\" width=\"100\" height=\"100\">");
  for (int i = 0; i < n; ++i){
    response->printf("<p>%d: %s (%s)%s<br>", i+1, first[i], second[i], third[i]);
  }
  response->printf(" <embed type=\"text/html\" src=\"textplaceholder\"> "); 
  response->print("</body></html>");
  request->send(response);
});

Я пытался использовать кодировку utf-8, но это не решило проблему. В 9-й строке я отправляю строки на веб-сервер, а first [i] - это строка, в которой также может быть более 11 символов, поэтому некоторые строки отображаются правильно, а те, которые слишком длинные, отображаются как - L1� ?.

Любая помощь приветствуется, спасибо!

1 Ответ

0 голосов
/ 22 августа 2020

Проблема заключалась в том, что %s printf требует const char * значения, добавляя .c_str ()); до конца строковой переменной проблема решена.

...