C#更改控制台编码错误(描述符错误)
今天,我运行VisualStudio并打开了我的项目,我大约5个月没有打开。 运行测试(一切正常)调用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
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: