Обработка русских символов в Arduino
в моем проекте с последовательного порта я записываю входящие символы в массив, латинские символы обрабатываются хорошо, но когда я пытаюсь обработать русский символ, программа не работает. Здесь я пытаюсь обработать русский символ "П", и условие не выполняется, если я проверяю английские буквы, то все в порядке, как я могу решить проблему?
if(Text[3] == 'П')
{
Serial.println("Буква: П");
}
Массив Text[] имеет тип char
Как выяснил редактор использует кодировку UTF-8
void setup()
{
Serial.begin(9600);
char text[] = "П";
Serial.println(text);
Serial.print("text length: ");
Serial.println(strlen(text));
Serial.println(text[0], HEX);
Serial.println(text[1], HEX);
}
void loop()
{
}
И вот мой главный вопрос как мне определить что пришла именно буква "П" с кодом D09F в шестнадцатеричном формате или 208 159 в десятеричном?
Ответы (1 шт):
Код символа "П" в вашем коде зависит от кодировки исходного файла. Если вам нужно обрабатывать данные в однобайтной кодировке, можно сохранить исходный файл в той же кодировке.
Если нужно работать с многобайтной кодировкой, ищите библиотеки для работы с ней. Или изучайте стандарт utf8, и пытайтесь обрабатывать вручную. Для конкретных кодовых таблиц это возможно, но не советую.
Выбор кодировки зависит от прикладной задачи, а не от редактора. Если нужна информация о многобайтовых кодировках, задавайте отдельный вопрос.
