Используйте суррогатную пару символов Unicode в Arduino IDE

Я пишу скетч для Wemos D1 Mini, чтобы отображать веб-страницу. Это работает, и я могу отображать символы Unicode, но если я попытаюсь использовать их с суррогатными парами, такими как 🔊, я получу ошибку компиляции;

 s += "\uD83D\uDD0A";

Ошибка

\uD83D не является допустимым универсальным символом

Как мне получить этот символ в моем коде?

, 👍1


2 ответа


0

После нескольких проб и ошибок я добился этого, используя стиль Python u"\U0001F50A" без ведущей буквы u, конечно

 s += "\U0001F50A";

Жаль, что я не подумал о том, чтобы загуглить сообщение об ошибке, это сэкономило бы мне время.

,

1

В C++11 есть новая замечательная функция, которая называется строковый литерал, этот пример показывает, как использовать его с любым однострочным или многострочным текстом или текстом utf8. Вы просто определяете начальную и конечную последовательность, в следующем случае --- (начальная последовательность становится R"---( и конечная последовательность )---") и убедитесь, что эта последовательность не появляется в инкапсулированном тексте. Это отлично подходит для интеграции веб-сайтов в проекты arduino:

static const char _index_html[] PROGMEM = R"---(
<html>
<head>
<link rel="icon" type="image/png" href="/favicon.png"/>
</head>
<body>
...
</body>
</html>
)---";
,