您好,我正在开发微控制器的嵌入式应用程序,用于在显示器上显示数据。 微控制器是STM32,我使用的图形工具是touch gfx。 我想用西里尔语和希伯来语显示一些文本。 当我在 touch gfx 的 GUI 中写入文本时,我可以正确地看到显示屏上的文本
但是当我尝试运行以下代码以从代码 stm32cubeide 传递一些文本时
我的显示屏上显示了一些问号..
这是导致俄语和希伯来语文本出现问题的代码
textArea4.setColor(touchgfx::Color::getColorFrom24BitRGB(236, 209, 18));//extra time?
Unicode::strncpy(textArea4Buffer, parArea4[tipolingua][5], Unicode::strlen(parArea4[tipolingua][5])+1);
textArea4.invalidate();
const char* parArea4[5][6] = { { "Preheating", "Ready", " ", "Baking", "Extra time", "Extra time?" }, { "Preriscaldo", "Pronto", " ", "Cottura", "Extra time", "Extra time?" }, { "Prechauffage", "Pret", " ", "Cuisson", "Extra time", "Extra time?" }, { "Предварительный нагрев", "Готовый", " ", "Выпечка", "дополнительное время", "дополнительное время?" }, { "חימום מוקדם", "מוּכָן", " ", "אֲפִיָה", "זמן נוסף", "זמן נוסף" } };
知道如何修复它吗?
非常感谢
例如:
'П' UTF-8 '0xD0 0x9F'
,使用char[]
时,默认使用第一种方法。
strncpy(UnicodeChar *RESTRICT dst, const char *RESTRICT src, uint16_t maxchars)
strncpy(UnicodeChar *RESTRICT dst, const UnicodeChar *RESTRICT src, uint16_t maxchars)
对于Touchgfx,
0xD0
和0x9F
是两个未知字符,所以'?'