Используйте суррогатную пару символов Unicode в Arduino IDE
Я пишу скетч для Wemos D1 Mini, чтобы отображать веб-страницу. Это работает, и я могу отображать символы Unicode, но если я попытаюсь использовать их с суррогатными парами, такими как 🔊, я получу ошибку компиляции;
s += "\uD83D\uDD0A";
Ошибка
\uD83D не является допустимым универсальным символом
Как мне получить этот символ в моем коде?
@Musa, 👍1
2 ответа
После нескольких проб и ошибок я добился этого, используя стиль Python u"\U0001F50A"
без ведущей буквы u, конечно
s += "\U0001F50A";
Жаль, что я не подумал о том, чтобы загуглить сообщение об ошибке, это сэкономило бы мне время.
В 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>
)---";
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
- устаревшее преобразование из строковой константы в 'char*'
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Разница между print() и println()
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]