@cicatrix
было бы большой ошибкой думать

Почему возвращается \0 при вводе русских букв в консоли C#?

Простейшее консольное приложение (net6.0).
var answer = Console.ReadLine();
При вводе русских букв (в консоли визуально отображается верно), в answer получается '\0'
Кодировку проверяю:
Console.InputEncoding.EncodingName
"Unicode (UTF-8)"


ОС: Win10
Не совсем понимаю, что происходит.

UPD:
Для проверки, создал новый проект:
629882f170301996606279.png

62988306e948e864499023.png


Вот файл проекта:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
  • Вопрос задан
  • 804 просмотра
Пригласить эксперта
Ответы на вопрос 1
@cicatrix Автор вопроса
было бы большой ошибкой думать
Доходило долго, но я справился.
Внутри строки в нынешнем шарпе хранятся в utf-16, а в консоли - в utf-8.
чтобы работало, надо указать явно кодировку utf-16:
Console.InputEncoding = System.Text.Encoding.GetEncoding("utf-16");
Console.WriteLine("Hello, World!");
var ans = Console.ReadLine();
Console.WriteLine(ans);

Может, кому пригодится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы