ну я себе парю ладно, вам то мне зачем это делать?))
Код: Выделить всё
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] + 0x2F; //D0 c 144 по 191
} else {if (src[i] >= 0x80) {dest[++j] = src[i] + 0x6F; //D1 с 128 по 143
} else {dest[++j] = src[i];}
}
if (src[i]== 0x91) { dest[++j] = 0xB7;} //Ё
if (src[i]== 0x81) { dest[++j] = 0xA8;} //ё
code=src[i];
code2=dest[j];
itoa(code, buffer_USART, 10);
USART_sendLine(buffer_USART);
USART_sendLine(" , ");
itoa(code2, buffer_USART, 10);
USART_sendLine(buffer_USART);
USART_sendLine("\n\r");
} //end for
dest[j] ='\0';
return j;
}
/-----------------основной код---------------
const unsigned char m[] = "АБВрст"; // исходная строчка кириллицей
char k[10]; // сюда будем записывать результат перекодировки
utf8_rus(k,m);
Код: Выделить всё
208 , 255 - 0xDO
144 , 191 - 191 = А или Win-1251
208 , 255 0xDO
145 , 183 183, т.к. if (src[i]== 0x81) { dest[++j] = 0xA8;} //ё
208 , 255 0xD0
146 , 193 В
209 , 0 0xD1
128 , 239 р
209 , 0 0xD1
129 , 168 c 168, т.к. if (src[i]== 0x91) { dest[++j] = 0xB7;} //Ё а не 192
209 , 0 0xD1
130 , 241 т
[uquote="Dimon456",url="/forum/viewtopic.php?p=4096656#p4096656"]AlexS4, если он полностью проект выложит - может тогда еще гляну. А так пусть пишет в соответствующий раздел форума.[/uquote]
Надо будет выложу, объясните мне вот выше сказанное мной. Там переделок минималка. Я не на что не претендую, пишу код для себя и под свои нужды, поделка для себя, стесняться мне не чего.


