1

Всем привет, помогите пожалуйста с ascii. Суть программы: шифрование и дешифрование сообщений. Если вводить текст на англ языке то все хорошо но вот когда доходит до русского то что-то непонятное происходит. Например я вводил "п" а выдавало что-то непонятное на подобие i (только точки с двух сторон были) потом я попробовал делать тоже самое но с использованием "bitset" не помогло. Потом решил опять попробовать переподключить setlocale в разных вариациях и все заработало... дабы узнать в чем проблема начал возвращать код в исходное состояние (где работал только через char (как код внизу)) но по итогу теперь все работает... но я так и не понял почему... п.с приложение (тот код что снизу) консольное а основное в winforms и там не работает =\ я пробовал делать все тоже самое что и делал в консольном но увы... пробовал дебажить... букву "п" видит как (1087) потом уменьшаю это значение на 13 (дабы зашифровать) и получаем 1074 что равно "2"... Начинаю расшифровывать значение "2" приравниваю его к char и получаю 50... увеличиваем 50 на 13 дабы расшифровать и получаем "?". С англ все хорошо и все работает...

while (int i = 0 < 10) {
    unsigned char c;
    int ascii;
    cout << "ascii symbol: ";
    cin >> c;
    cout << "ASCII-number: " << (int)c << endl;
    cout << "set ASCII-number of symbol: ";
    cin >> ascii;
    cout << "symbol: " << (char)ascii << endl;
}
return 0;
goga
  • 111
  • Скомпилируйте без поддержки Unicode, и по крайней мере именно этот код будет нормально работать. А вообще это большая отдельная и неприятная :) тема... – Harry Oct 09 '17 at 14:56
  • дубликат https://ru.stackoverflow.com/questions/459154/%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9-%D1%8F%D0%B7%D1%8B%D0%BA-%D0%B2-%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8 – KoVadim Oct 09 '17 at 14:56
  • 4
    Проблема в том, что уже примерно лет 20 символы не являются ASCII-символами. Вам придётся познакомиться с Unicode. – VladD Oct 09 '17 at 16:28

0 Answers0