Что то не так делаю, может принцип сам не понимаю перекодировки. Кто подскажет более свежим опытным взглядом?
Код: Выделить всё
/*--------------------------------------------------------------------------------------
UTF8 функция перекодировки
---------------------------------------------------------------------------------------*/
int utf8_rus(char* dest, const unsigned char* src) {
unsigned int i, j;
for ( i =0, j=0; src[i]; i++) {
if (src[i] >= 0x90) { dest[++j] = src[i] + 0x30; //D0 c 144 по 191
} else {if (src[i] >= 0x80) {dest[++j] = src[i] + 0x70; //D1 с 128 по 143
} else {dest[++j] = src[i];}
}
if (src[i]== 0x91) { dest[j] = 0xB7;} //Ё
if (src[i]== 0x81) { dest[j] = 0xA8;} //ё
} //end for
dest[j] ='\0';
return j;
}
/----в основном коде-------------
const unsigned char m[] = "АБВГД"; // исходная строчка кириллицей
char k[10]; // сюда будем записывать результат перекодировки
utf8_rus(k,m);
USART_sendLine(k);
/*--------------------------------------------------------------------------------------*/


