Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/50: Рейтинг темы: голосов - 50, средняя оценка - 4.98
1 / 1 / 0
Регистрация: 30.06.2011
Сообщений: 4

Метод Readkey и распознавание русских символов

30.06.2011, 11:50. Показов 10561. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю простую задачу: читаю в консоли клавишу с помощью метода ReadKey() и добавляю
полученный символ в строковую переменную. Вот код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
ConsoleKeyInfo keyInfo = new ConsoleKeyInfo();
string str = null;
 
while (true)
{
   keyInfo = Console.ReadKey();
   if (keyInfo.Key == ConsoleKey.Enter)
       break;
   str += keyInfo.KeyChar;
                
}
Console.WriteLine("\n{0}",str);
С латинскими символами проблем нет, а вместо русских - выдает знаки вопроса и при вводе и при выводе.
В чем дело не могу понять.
Попытки подключить кодовую страницу:

C#
1
Console.OutputEncoding = Encoding.GetEncoding(1251);
или получить строку из набора байт, соответствующих введенным символам:

C#
1
string res = Encoding.GetEncoding(1251).GetString(Encoding.Default.GetBytes(str.ToCharArray()));
ни к чему хорошему не приводят.

Помогите, пожалуйста!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.06.2011, 11:50
Ответы с готовыми решениями:

Распознавание русских букв консолью
Доброго времени суток, форумчане! У меня такая проблема. Я бы хотел написать программу с паролем, которая при вводе верного продолжает...

Масив и ReadKey!)Задача состоит в следующем:есть множество символов...
Задача состоит в следующем:есть множество символов,к примеру А=(z,q,t,j,l),нужно написать программу,которая будет делать следующее: ...

Как настроить ввод русских символов и в дальнейшем вывод этих символов
Подскажите как в этом коде настроить ввод русских символов и в дальнейшем вывод этих символов. Данный код выводит лишь всякую ерунду место...

7
1 / 1 / 0
Регистрация: 30.06.2011
Сообщений: 4
01.07.2011, 13:39  [ТС]
В твоей программе: ввожу английские в нижнем регистре, а они - заглавные ...и это понятно!

Фишка в том, что мне надо испльзовать не Key а KeyChar (туда попадают символы, а не клавиши),
а для этого надо вводить структуру ConsoleKeyInfo.

Моя задача: обработка введенного с клавиатуры пароля, а не просто контроль нажатия клавиш

Проблема в том, что метод ReadKey(false) при считывании русского символа выдает знак вопроса,
что означает: текущая кодировка не знает такого кода. Но не факт, что проблема заключается в
кодировке, потому что метод ReadLine прекрасно читает русские символы и отображает их корректно.

Как у тебя работает именно мой код?
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
01.07.2011, 16:10
Моя задача: обработка введенного с клавиатуры пароля, а не просто контроль нажатия клавиш
Когда вводят пароли не отображают символы. Обычно это звездочки.
0
60 / 60 / 13
Регистрация: 23.04.2011
Сообщений: 110
01.07.2011, 16:27
Цитата Сообщение от Edison Посмотреть сообщение
Точно так же как и у тебя. Вряд ли ты поймаешь кириллицу в консоли.
У меня нормально работает. Консоль использует старую дос кодировку cp866.

можно попробовать:
C#
1
2
Console.InputEncoding = Encoding.GetEncoding(866);
Console.OutputEncoding = Encoding.GetEncoding(866);
В моей системе корректно отображается (система русскоязычная).
0
1 / 1 / 0
Регистрация: 30.06.2011
Сообщений: 4
01.07.2011, 16:44  [ТС]
Цитата Сообщение от Петррр Посмотреть сообщение
Когда вводят пароли не отображают символы. Обычно это звездочки.
А анализируют символы
0
1 / 1 / 0
Регистрация: 30.06.2011
Сообщений: 4
13.07.2011, 14:19  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ConsoleKeyInfo keyInfo = new ConsoleKeyInfo();
string str = null;
while (true)
{
    keyInfo = Console.ReadKey();
    if (keyInfo.Key == ConsoleKey.Enter)
        break;
    str += keyInfo.KeyChar;                
}
char[] ch = str.ToCharArray();
byte[] b = Encoding.GetEncoding(1200).GetBytes(ch);
byte[] b1 = new byte[b.Length / 2];
for (int i = 0; i < b1.Length; i++)
    b1[i] = b[i * 2];
string str2 = Encoding.GetEncoding(866).GetString(b1);
и в str2 попадают корректные русские символы.
А вопросики при вводе можно закрывать звездочками.
1
Заблокирован
13.07.2011, 18:01
Цитата Сообщение от avt01 Посмотреть сообщение
А вопросики при вводе можно закрывать звездочками
А можно и
C#
1
 keyInfo = Console.ReadKey(true);
0
16 / 0 / 0
Регистрация: 23.02.2019
Сообщений: 107
17.06.2019, 14:05
Всего один вопрос меня интересует:
Цитата Сообщение от avt01 Посмотреть сообщение
обработка введенного с клавиатуры пароля
Кто делает пароли из кириллицы? Не считается ли странным тот факт, что используются только латинские буквы, цифры и некоторые символы. Если используется уловка вроде, ты печатаешь русские слова на английской раскладке, тогда разговор другой.

Но пароли на кириллице не делают в виду их невозможности восстановления. Дело в том, что кириллица занимает другой числовой диапазон в таблице символов, и он может быть изменен в следствии кодирования, что делает распознавание пароля невозможным.

Лучше всего хранить пароли согласно правилу, описанному выше, и хранить их не как пароли, а как хэш-суммы. После ввода пароля преобразовывать его в хеш-сумму и сравнивать с уже сохраненным паролем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.06.2019, 14:05
Помогаю со студенческими работами здесь

Чтение русских символов. Отрицательные значения у символов
Добрый вечер. Считую файл .txt. Но русские буквы получают отрицательное значение. И в итоге при попытке перевести в String не распознаются....

Перевести строку, состоящую из русских символов в строку из латинских символов, используя translit
Надо написать программу, которая переводит строку, состоящую из русских символов в строку из латинских символов, используя таблицу...

Оптическое распознавание символов
Доброе время суток. Стоит задача содрать текст с фото. Не знаю с какой стороны подступиться.Кто имел опыт, поделитесь пожалуйста. Куда...

Распознавание символов с картинки
Пытаюсь написать программу для распознавания текста на картинке, на картинке отмечены области с которых нужно распознать текст, картинка...

Функции. Распознавание символов
Распознавание символов. Написать функцию, которая возвращает 1, если символ, полученный функцией в качестве аргумента, является гласной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru