я иммел ввиду функцию вывода кирилицы на дисплей, а там далеко не пофиг
все шрифты однобайтные и без кирилицы… а те что нашел 1251 , а куб по умолчанию utf кода дает
Что прояснить? Что в приведенном вами коде нет ничего специфичного для STM32? Проясняю - нету, этот код одинаково хорошо работает и на AVR, и на ESP и даже на RP2040/2350. Основной принцип - при выводе кириллицы на экран ее нужно перекодировать из UTF8 в CP1251 (если шрифт в таковой)
Проходите по строке и считаете байты, пропуская 0xD0 и 0xD1. Примерно так
uint16_t getLengthOfString(char *_str)
{
uint16_t result = 0;
for (uint16_t i = 0; i < UINT16_MAX; i++)
{
// считаем до первого нулевого символа, не учитывая служебные байты
if ((uint8_t)_str[i] > 0)
{
// символы не кириллицы считаем в любом случае
if ((uint8_t)_str[i] < 0xc0)
{
result++;
}
// иначе, если первый байт служебный - пропускаем его
else if ((uint8_t)_str[i] != 0xd0 && (uint8_t)_str[i] != 0xd1)
{
result++;
}
}
else
{
break;
}
}
return (result);
}
. Ненавижу cp1251 … да и TDF двухбайтовый код штампует … конечно не все как хотелось , но пойдет… главное сжатый и автоматически…
А гонять туда сюда из одной кодировки в другую ,а потом обратно не вижу смысла.нужно при минимум телодвижений получать новые шрифты…
А при чем тут это…
Что прояснить? Что в приведенном вами коде нет ничего специфичного для STM32? Проясняю - нету, этот код одинаково хорошо работает и на AVR, и на ESP и даже на RP2040/2350. Основной принцип - при выводе кириллицы на экран ее нужно перекодировать из UTF8 в CP1251 (если шрифт в таковой)
я не понял причем тут мой код и стм … это вообще не в тему и вопрос мой тоже никак не относился ни к какой платформе… Да и если внимательно посмотреть - я создал всего 9 тем … где тут каждый чих ? да и вопросы в основном все указателей касались…
Нет… про мой код которым я пользуюсь , там нет кирилици и поэтому он вообще никакого отношения тут не имеет. я просто обьяснил нахрена мне нужен TDF.
а если Вы про функцию - то в моем понятии Им (STM32) по барабану кириллицы , латиницы и прочие *.цы . Как напишете, так и будет
означает , что как бы я не написал , т.е в латинице кирилице и пр , он должен был просто взять и вывести , а если ему для этого надо перекодировать , то это никак не значит что ему по барабану..
и кстати вопрос вообще стм не касался никак…
Ему, камню, реально пофиг. Он, как любой процессор, невероятно туп, лишен разума и выполняет только те инструкции, которые ему дал программист. И выполняет их дословно, побуквенно. Ни о чем при этом не рассуждая. Поэтому рассказывать про то, что он чего-то вам должен - глупо
Еще раз, при работе с кириллицей, как и с любым национальным шрифтом в кодировке UTF8 всегда (повторяю ВСЕГДА) нужно использовать функцию перекодировки. А про то, что IDE всегда сохраняет в UTF8 пора бы уже догадаться.
Да это какбэ ваши проблемы, шрифты, которые вы используете - как раз в этой кодировке
Я прекрасно знаю что камню пофиг .. и про то какую кодировку используеет иде я тоже вкурсе
Конечно мои , поэтому я про это и не спрашивал(TDF RLE не в 1251) , кстати как и про все остальное что касается стм в этом посте я тоже не спрашивалююю Это Вы сами решили тут что-то раздуть …Мой вопрос был только про TDF
“Для STM” и “с поддержкой кириллицы” это понятия ортогональные.
Если в шрифте есть кириллица, то без разницы, для STM он или для чего другого. А если кириллицы нет, то, опять же, ее нет нигде, ни в STM, ни в AVR, ни в ESP.
Без указания конкретной кодировки этот вопрос лишен смысла.
Правда?
Я уже лет 10 пользуюсь UTF8 без перекодировки.
Вот в этих проектах:
в обоих используется кириллица: в первом - на UTF8, а во втором - несколько кодировок на выбор, включая UTF8. Причем, организация шрифтов разная, но перекодировка нигде не используется (по крайней мере, перекодировка в одну из стандартных кодировок).
Личный пример - так себе аргумент. Можно и cp1251 шрифт использовать без перекодировки - просто вместо явной строки использовать массив индексов символов