Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Кирилица в консоли
Показать сообщение отдельно

Аватара для .Земляк.

Старожил


Сообщения: 185
Благодарности: 27

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
char* Decode_DOS_to_Win(char * str)
 {
     unsigned char *cstr=str; // "unsigned" - чтоб избежать предупреждений комп-ра
     for(; *cstr; cstr++)
     {
         if(*cstr<128) continue; // не фиг топтаться дальше, если не нужно конвертить!
         if(*cstr>=128 && *cstr<=175)
             *cstr+=64;
         else if(*cstr>=224 && *cstr<=239)
             *cstr+=16;
         else if(*cstr==252) // №
             *cstr=185;
         else if(*cstr==240) // Ё, Е с двумя точками - Йо
             *cstr=168; 
         else if(*cstr==241) //  Ё, е с двумя точками - йо
             *cstr=184;
         else if(*cstr==242) // Є, украинское Йе
             *cstr=170;
         else if(*cstr==243) // є, украинское йе
             *cstr=186;
         else if(*cstr==244) // Ї, украинское Йи
             *cstr=175;
         else if(*cstr==245) // ї, украинское йи
             *cstr=191;
         else if(*cstr==246) // Ў, беларусская У с хвостиком вверху - незнаю, как читается
             *cstr=161;
         else if(*cstr==247) // ў, беларусская У с хвостиком вверху - незнаю, как читается
             *cstr=162;
         else if(*cstr==248) // знак градуса
             *cstr=176;
         else if(*cstr==250) // маленькая центровая точка
             *cstr=183;
         else
             *cstr='?'; // некий символ, которым заменять несуществующие в CP1251
     }
     return str;
 }
//----------------------------------------------------
char* Decode_Win_to_DOS(char * str)
 {
     unsigned char *cstr=str;
     for(;*cstr;cstr++)
     {
         if(*cstr<128) continue; // не фиг топтаться дальше, если не нужно конвертить!
         if(*cstr>=240)
             *cstr-=16;
         else if(*cstr>=192)
             *cstr-=64;
         else if(*cstr==185) // №
             *cstr=252;
         else if(*cstr==168) // Ё, Е с двумя точками - Йо
             *cstr=240;
         else if(*cstr==184) //  Ё, е с двумя точками - йо
             *cstr=241;
         else if(*cstr==170) // Є, украинское Йе
             *cstr=242;
         else if(*cstr==186) // є, украинское йе
             *cstr=243;
         else if(*cstr==175) // Ї, украинское Йи
             *cstr=244;
         else if(*cstr==191) // ї, украинское йи
             *cstr=245;
         else if(*cstr==178) // I, украинское И
             *cstr=73;            // в английскую, т.к. в ДОСе нет
         else if(*cstr==179) // i, украинское и
             *cstr=105;         // в английскую, т.к. в ДОСе нет
         else if(*cstr==161) // Ў, беларусская У с хвостиком вверху - незнаю, как читается
             *cstr=246;
         else if(*cstr==162) // ў, беларусская У с хвостиком вверху - незнаю, как читается
             *cstr=247;
         else if(*cstr==176) // знак градуса
             *cstr=248;
         else if(*cstr==183) // маленькая центровая точка
             *cstr=250;
         else
             *cstr='?'; // некий символ, которым заменять несуществующие в CP1251
     }
     return str;
 }

Отправлено: 21:39, 16-12-2009 | #67

Название темы: Кирилица в консоли