Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#更改控制台编码错误(描述符错误)_C#_.net_Visual Studio 2015_Encoding_Console - Fatal编程技术网

C#更改控制台编码错误(描述符错误)

C#更改控制台编码错误(描述符错误),c#,.net,visual-studio-2015,encoding,console,C#,.net,Visual Studio 2015,Encoding,Console,今天,我运行VisualStudio并打开了我的项目,我大约5个月没有打开。 运行测试(一切正常)调用IOException,并提供附加信息:“坏描述符” 是这样的: var defaultConsoleEncoding = Console.InputEncoding; Console.InputEncoding = TryGetEncoding("UTF-8"); // <--- There is error ... public static Encoding TryGetEncod

今天,我运行VisualStudio并打开了我的项目,我大约5个月没有打开。 运行测试(一切正常)调用
IOException
,并提供附加信息:“坏描述符”

是这样的:

var defaultConsoleEncoding = Console.InputEncoding;
Console.InputEncoding = TryGetEncoding("UTF-8");  // <--- There is error
...
public static Encoding TryGetEncoding(string encoding)
    {
        try
        {
            return Encoding.GetEncoding(encoding);
        }
        catch (ArgumentException)
        {
            Logger.WarnAndPrint($"Can't using {encoding} encoding. Fallback to utf-8");
            return Encoding.UTF8;
        }
    }

出于兴趣,如果您只是将代码更改为
Console.InputEncoding=Encoding.UTF8,是否会出现相同的错误?(我想这里根本不需要你的
trygetencode
方法。)@JonSkeet我想知道为什么,但是是的!当我使用Console.inpunecoding=Encoding.UTF8时也会出现同样的错误!重新检查我的git步骤,我发现,当我为控制台添加此编码更改时,问题就出现了。这是更改控制台编码的正确方法吗?我猜这是更改输入编码的正确方法,但不能设置为UTF-8。你确定要更改输入编码,对吗?@JonSkeet right。我需要明确的输入编码。但在测试中,似乎不知道什么类型的编码集。因为我删除了更改编码代码,然后尝试从控制台“?”符号输入,它的工作正确。。。不知道,如果没有输入编码,它是否真的需要更改输入编码,如果没有输入编码,它工作得很好。。。
System.IO.IOException was unhandled by user code
  HResult=-2147024890
  Message=Неверный дескриптор.

  Source=mscorlib
  StackTrace:
       в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       в System.Console.set_InputEncoding(Encoding value)
       в PasswordListGenerator.Substitutions.Substitution.Process() в C:\GITHUB\passwordlistgenerator\PasswordListGenerator\PasswordListGenerator\Substitutions\Substitution.cs:строка 89
       в PasswordListGeneratorTest.SubstitutionTests.SkipManySymbols_ShouldReturnSubstitutions() в C:\GITHUB\passwordlistgenerator\PasswordListGenerator\PasswordListGeneratorTest\SubstitutionTests.cs:строка 588
  InnerException: